怎么做日期的动态行列转换

weisai 2020-10-14 03:06:17
产品 销售数量 销售日期
A 100 2020-10-9
B 200 2020-10-10
C 300 2020-10-11



日期不定,最多一个月
需要求得下面结果
产品 2020-10-9 2020-10-10 2020-10-11
A 100 0 0
B 0 200 0
C 0 0 300
...全文
134 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
雨夹雪 2020-10-14
  • 打赏
  • 举报
回复

CREATE TABLE #T
(
产品 VARCHAR(10),
销售数量 INT, 
销售日期 DATE
)

INSERT INTO #T VALUES('A',100,'2020-10-9')
INSERT INTO #T VALUES('B',200,'2020-10-10')
INSERT INTO #T VALUES('C',300,'2020-10-11')

DECLARE @sql VARCHAR(max)=''

SELECT @sql=@sql+','+QUOTENAME(A.销售日期)
FROM
(
SELECT 销售日期  FROM #T GROUP BY  销售日期 
) A ORDER BY 销售日期

SET @sql='select 产品'+@sql+' from #T pivot(sum(销售数量) for 销售日期 in ('+STUFF(@sql,1,1,'')+')) P'

EXEC(@sql)

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧