这样不行吗,为什么上面的写得那么复杂。。 SELECT a.user_id , sum(CASE WHEN a.item_id="A" THEN a.s esle NULL END) AS A, sum(CASE WHEN a.item_id="B" THEN a.s esle NULL END) AS B FROM table GROUP BY user_id
一个left join 一个right join然后union?有点复杂。。 select t1.user_id user_id, t1.money A_money, t2.money B_money from (select user_id, money from test1 where item_id=1) t1 left join (select user_id, money from test1 where item_id=2) t2 on t1.user_id = t2.user_id union select t2.user_id user_id, t1.money A_money, t2.money B_money from (select user_id, money from test1 where item_id=1) t1 right join (select user_id, money from test1 where item_id=2) t2 on t1.user_id = t2.user_id
SELECT b.* FROM (SELECT a.user_id , CASE WHEN a.item_id="A" THEN a.s esle NULL END AS A, CASE WHEN a.item_id="B" THEN a.s esle NULL END AS B FROM (SELECT user_id, item_id, sum(amount) AS s FROM tb WHERE item_id = 'A&(314)#39; &nbs***bsp;item_id = 'B' GROUP BY user_id, item_id)) b WHERE b.A IS NOT NULL AND b.B IS NOT NULL