我正在尝试使用CASE编写一个SQL语句,以便创建自己的数据透视/摘要视图。 This spreadsheet显示了我正在使用的表格(这是Excel的图片,但为了安全起见,我不得不复制虚假数据)。我想学习如何编写一个SQL语句,该语句将显示不同的项目编号,以及每年(2012年,2013年,2014年)的总QTY_SOLD。基本上,我会有5列:
ITEM,QTY_SOLD,CY2012,CY2013,CY2014
我尝试过写这样的东西:
select distinct ITEM,
case when to_char(Date,'YYYY') = '2012' then sum(QTY_SOLD)
end CY2012,
case when to_char(Date,'YYYY') = '2013' then sum(QTY_SOLD)
end CY2013,
case when to_char(Date,'YYYY') = '2014' then sum(QTY_SOLD)
end CY2014
from ITEMS_SOLD
group by ITEM, to_char(DATE,'YYYY')
但我似乎无法使其正常运作。任何帮助将不胜感激。
答案 0 :(得分:1)
你很接近 - 你需要使用条件聚合:
select ITEM,
sum(case when to_char(Date,'YYYY') = '2012' then QTY_SOLD end) CY2012,
sum(case when to_char(Date,'YYYY') = '2013' then QTY_SOLD end) CY2013,
sum(case when to_char(Date,'YYYY') = '2014' then QTY_SOLD end) CY2014
from ITEMS_SOLD
group by ITEM