使用SQL Case语句创建数据透视/摘要视图

时间:2015-04-25 01:51:33

标签: sql oracle oracle11g

我正在尝试使用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')

但我似乎无法使其正常运作。任何帮助将不胜感激。

1 个答案:

答案 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