sql-server - 如何透视具有多个列值的 SQL Server 表?
问题描述
如何使用 SQLPIVOT
函数获得预期结果。我尝试了以下查询来执行此操作,但我在NAME
列中只获得了一条记录。
样本数据:
SNO TYPE ENTRY
1 Name Andy
1 Name Kevin
1 Active Yes
1 Value 50
2 Name Andy
2 Name Julia
2 Active No
2 Value 45
预期结果:
SNO NAME ACTIVE VALUE
1 Andy, Kevin Yes 50
2 Andy, Julia No 45
我试过的查询:
select SNO,Name,Active,Value
from
(
select * from tbl1
) as PivotData
Pivot
(
max(ENTRY) for TYPE in([Name],[Active],[Value])
) as Pivoting
解决方案
假设 ACTIVE 和 VALUE 没有多个值。我们只是从 PIVOT 中排除 NAME 并通过标准 XML STUFF 解决它
例子
Select SNO
,Name = Stuff((Select Distinct ',' +Entry From @YourTable Where SNO=Pvt.SNO and [TYPE]='Name' For XML Path ('')),1,1,'')
,Active
,Value
From YourTable A
Pivot ( max(ENTRY) for TYPE in (Active,Value) ) Pvt
退货
SNO Name Active Value
1 Andy,Kevin Yes 50
2 Andy,Julia No 45
推荐阅读
- rest - Rest API,在一个请求中保存嵌套模型
- corda - 启动流会话失败
- python - AppKit 没有动态感知最前面的应用程序
- azure - 使用 microsoft-graph-client 获取日历事件
- jquery - 如何使用 jQuery 脚本定位特定的自定义 html 标签
- mysql - 更新为 NULL 时,列“x”的数据被截断
- linux - 服务被禁止:用户 \"system:anonymous\" 无法列出命名空间 \"kube-system\ 中的服务
- html - IE11 使用第一个选择选项作为占位符而不是空白选择
- python - 如何在 python3 中签名/验证莱特币消息
- python - 在 matplotlib 中激活图形