2017-07-26 138 views
0

我有两个表称为A,B。我写的SQL查询从A检索数据,B.它如下:SQL SELECT查询两行合并

SELECT A.No , 
    A.ItemCode, 
     case when B.Year = 1 then SUM(B.Sale_Amount) end as "1Year", 
     case when B.Year = 2 then SUM(B.Sale_Amount) end as "2Year", 
     case when B.Year = 3 then SUM(B.Sale_Amount) end as "3Year" 
FROM A 
LEFT OUTER JOIN B ON B.ID = A.CODE  
GROUP BY 
A."No", 
A."ItemCode", 
B."Year" 

这给了下面的输出:

result

但我需要这三行两行选择如下:

reslut wanted

+2

删除组。由于您按年份分组,但第二和第三行具有不同的年份值,因此不会像您期望的那样将它们分组在一行中。 – subro

+0

[部分数据透视不带枢轴运算符]的可能重复(https://stackoverflow.com/questions/12542711/partial-pivot-without-pivot-operator) –

+0

其中[DBMS](https://en.wikipedia.org/ wiki/DBMS)你在用吗? Postgres的?甲骨文? –

回答

0

这是正确的答案

SELECT A.No , 
A.ItemCode, 
    SUM(case when B.Year = 1 then B.Sale_Amount end) as [1Year], 
    SUM(case when B.Year = 2 then B.Sale_Amount end) as [2Year], 
    SUM(case when B.Year = 3 then B.Sale_Amount end) as [3Year] 


LEFT OUTER JOIN B开B.ID = A.CODE
GROUP BY A.No,A.ItemCode逐年