我不想使用静态数据透视,因为我的值是动态的,这是我的表格看起来像
ItemName Date Qty
Tomato 11/29/2015 20
Tomato 11/30/2015 15
Apple 12/2/2015 41
Mango 12/3/2015 23
Onion 12/4/2015 11
但我希望看起来像这样,但我不能对ItemName和Date进行硬编码,因为它们总是动态的。
答案 0 :(得分:1)
尝试下面的查询
--Sample Table Creation
create table veg
( itemname varchar(50),
[date] date,
qty int
)
insert into veg
values
('Tomato', '11/29/2015', 20),
('Tomato', '11/30/2015' , 15),
('Apple' , '12/2/2015' ,41),
('Mango' , '12/3/2015' , 23),
('Onion' , '12/4/2015' , 11)
--dynamic sql
DECLARE @col AS NVARCHAR(MAX)
DECLARE @val AS NVARCHAR(MAX)
SET @col = STUFF((SELECT distinct ',' + QUOTENAME(c.date)
FROM veg c
FOR XML PATH('')
),1,1,'')
--select @col
set @val = 'SELECT itemname, ' + @col + ' from
(
SELECT itemname,date,qty
FROM veg
) SOURCE
PIVOT
(
SUM(qty)
FOR date IN (' + @col + ')
) p '
exec (@val)