0

几个小时以来,我一直在用头撞墙。我已经设法将我需要的所有数据放到 1 个表中,但我就是不知道如何编写一个 select 语句,所以输出是我想要的方式。

基本上我有一张桌子:

ID| Date | Cost
a  03/11   5
a  02/11   4
b  01/11   3
b  04/11   7

更改查询列输出的列是日期列。我希望能够将所有 ID 分组在一起,每行包含 ID 和与该 ID 相关的每个项目每月的成本,或者如果当月没有项目(从 jan-dec),则为 null

查询输出:

ID| JAN |FEB | MARCH | APR | MAY | JUN | JUL |......| OCT | NOV | DEC
a   NULL  4      5      NULL NULL.................................NULL
b   3    NULL   NULL     7   NULL.................................NULL

感谢您在正确方向上的任何帮助!

谢谢你。

4

1 回答 1

2
;with data(ID, Date, Cost) as (
    select 'a', '20110311', 5 union all
    select 'a', '20110211', 4 union all
    select 'b', '20110111', 3 union all
    select 'b', '20110411', 7
)
--- the above just creates a virtual dataset named data.
--- Your query starts below here

select *
  from
    (
    select ID, left(upper(datename(month,Date)),3) Month_, Cost
    from data
    ) p
 pivot (sum(Cost) for Month_ in ([Jan],[Feb],[Mar],[Apr],[May],[Jun],[Jul],[Aug],[Sep],[Oct],[Nov],[Dec])) v
于 2013-04-05T02:56:44.437 回答