我有一个SQL查询,它返回以下结果:
Item Count Date
-----------------------
item1 10 01MAR14
item1 5 02MAR14
Item2 5 01MAR14
item3 12 03MAR14
item2 12 04MAR14
item3 2 05MAR14
item1 3 05MAR14
但我需要的结果如下:
Item 05MAR14 04MAR14 03MAR14 Before-03MAR14
----------------------------------------------
item1 3 0 0 15
item2 0 12 0 5
item3 2 0 12 0
我正在使用SQL Server 2008R2。
答案 0 :(得分:1)
只是一个简单的想法,为您提供有关透视的知识。我已经用我的日期格式替换了你的日期格式,但最好使用动态查询进行旋转。
CREATE TABLE [dbo].[tblTest](
[Item] [varchar](50) NOT NULL,
[Count] [int] NOT NULL,
[Date] [date] NOT NULL
)
insert into tblTest values('item1', 10, '01MAR14')
insert into tblTest values('item1', 5 , '02MAR14')
insert into tblTest values('Item2', 5 , '01MAR14')
insert into tblTest values('item3', 12, '03MAR14')
insert into tblTest values('item2', 12, '04MAR14')
insert into tblTest values('item3', 2 , '05MAR14')
insert into tblTest values('item1', 3 , '05MAR14')
SELECT Item, IsNull([2014-03-05], 0) as [2014-03-05], Isnull([2014-03-04], 0) [2014-03-04], IsNull([2014-03-03],0) [2014-03-03], ISNULL([2014-03-02], 0) as 'Before[2014-03-01]'
FROM (
SELECT
Item, case when [Date] < '2014-03-03' then '2014-03-02' else [DATE] end as [Date], [Count]
FROM tblTest
) AS s
PIVOT
(
sum([Count])
FOR [Date] IN ([2014-03-05],[2014-03-04],[2014-03-03], [2014-03-02])
)AS pivotTable