2016-03-15 66 views
0

我在我的桌子下面的细节MySQL的选择动态记录的值作为列名

股票表

id sale stock item_code branch 
1 0 200 abc  A 
2 100 200 abc  A 
3 0 200 def  B 
4 100 200 def  B 
5 0 200 xyz  B 
6 100 200 xyz  A 

而且,她是我的预期输出:

item_code A-sale A-stock  B-sale B-stock 
abc   100  400  null  null 
def   null null  100  400 
xyz   100  200   0  200 

我怎么能设法从股票表中获得这个输出?

回答

0

尝试此查询

SELECT 
    item_code, 
    SUM(CASE 
     WHEN branch = 'A' THEN sale 
     ELSE 0 
    END) 'A-sale', 
    SUM(CASE 
     WHEN branch = 'A' THEN stock 
     ELSE 0 
    END) 'A-stock', 
    SUM(CASE 
     WHEN branch = 'B' THEN sale 
     ELSE 0 
    END) 'B-sale', 
    SUM(CASE 
     WHEN branch = 'B' THEN stock 
     ELSE 0 
    END) 'B-stock' 
FROM 
    stock 
GROUP BY item_code 
+0

那相同的答案像我你只改变了语法了一下! – sagi

+0

嗨1000111谢谢你的回复 – user3296668

+0

和萨吉你这种评论是相当幼稚的。这表明你只是为了获得声望而渴望。我尊重他人的意见和价值观,以及我对他人的期望。你很清楚不同的用户可能会以几乎相同的方式来处理这个问题。谢谢@ Sagi – 1000111

0
select item_code, 
    case when branch ='A' Then max(sale) end as A-sale, 
    case when branch ='A' Then sum(stock)as A-stock, 
    case when branch ='B' Then max(sale) end as B-sale, 
    case when branch ='B' Then sum(stock)as B-stock 
from table_name 
group by item_code 
0
SELECT 
    item_code, 
    SUM(CASE 
     WHEN branch = 'A' THEN sale 
     ELSE 0 
    END) 'A-sale', 
    SUM(CASE 
     WHEN branch = 'A' THEN stock 
     ELSE 0 
    END) 'A-stock', 
    SUM(CASE 
     WHEN branch = 'B' THEN sale 
     ELSE 0 
    END) 'B-sale', 
    SUM(CASE 
     WHEN branch = 'B' THEN stock 
     ELSE 0 
    END) 'B-stock' 
FROM 
    stock 
GROUP BY item_code 

让我知道它的工作或没有