[SQL Server]行转列pivot透视表的创建

应用场景

在使用SQL Server时,基于原有的表做一张透视表(pivot table)

SQL代码以及实例展示

SQL代码

SELECT expression 
	,[value_in_field]
	,[value_in_field]
	.....
	,[value_in_field]
FROM (SELECT expression,field,field_polymer FROM table_resource)A
PIVOT 
(expression_polymer(field_polymer)
	For field IN
	([value_in_field]
	,[value_in_field]
	.....
	,[value_in_field]
	)
-- expression:透视表中的行;可使用多个expression;来源于原表
-- value_in_field:原表中需要行转列/需要透视的列field中的value;来源于原表
-- expression_polymer(field):想要在透视表中展示的聚合后的值;聚合函数(来源于原表的field_polymer)

这里需要注意的是:如果value_in_field如果含有像’.’,’-’,’_‘这样的特殊字符,两边必须加’[]’不然会报如下错误,如果为常规字符串两边可不加’[]’

Incorrect syntax near ‘2020’.
在这里插入图片描述

书写需注意以及结果展示

  1. 这里建议在value_in_field两边加’[]'

  2. 如果在原表中找不到的值会以NULL展示

实例展示

pivot透视表中想要的效果:

  1. 行为:原表中的A和B
  2. 列为:原表D中的部分时间
  3. 想要在透视表中展示的聚合后的值:SUM(C),原表中的 C 字段

代码:

SELECT A
		,B
		,[2020-10-09]
		,[2020-10-16]
		,[2020-10-23]
		,[2020-10-30]
		,[2020-11-06]
		,[2020-11-13]
		,[2020-11-20]
		,[2020-11-27]
		,[2020-12-04]
		,[2020-12-11]
		,[2020-12-18]
		,[2020-12-25]
		,[2021-01-01]
FROM (SELECT D,B,A,C FROM e)A
PIVOT 
(SUM(C)
	For D IN
	(    [2020-10-09]
		,[2020-10-16]
		,[2020-10-23]
		,[2020-10-30]
		,[2020-11-06]
		,[2020-11-13]
		,[2020-11-20]
		,[2020-11-27]
		,[2020-12-04]
		,[2020-12-11]
		,[2020-12-18]
		,[2020-12-25]
		,[2021-01-01]
	)) B

结果展示:
在这里插入图片描述

在原表中,在对应时间中找不到的数值以NULL展示出来

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AutismThyself

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值