UnPivot 多列 MSSQLServer
Posted
技术标签:
【中文标题】UnPivot 多列 MSSQLServer【英文标题】:UnPivot multiple columns MSSQLServer 【发布时间】:2021-12-30 00:56:22 【问题描述】:我有一个 MSSQLServer 表如下:
CASNumber | ClaimVersion | ActualHSS | ApprovedHSS | ActualSurg | ApprovedSurg | ActualAmb | ApprovedAmb |
---|---|---|---|---|---|---|---|
GN00000068 | 1 | 819.64 | 819.64 | 190 | 120 | 1232 | 1142 |
从上表中,我正在寻找如下输出:
CASNumber | ClaimVersion | Item | Actual | Approved |
---|---|---|---|---|
GN00000068 | 1 | ActualHSS | 819.64 | 819.64 |
GN00000068 | 1 | ActualSurg | 190 | 120 |
GN00000068 | 1 | ActualAmb | 1232 | 1142 |
非常感谢任何专业知识指导。
感谢和问候
【问题讨论】:
【参考方案1】:您可以使用VALUES
表值构造函数和一个额外的APPLY
运算符来反透视表:
表:
SELECT *
INTO Data
FROM (VALUES
('GN00000068', 1, 819.64, 819.64, 190, 120, 1232, 1142)
) v (CASNumber, ClaimVersion, ActualHSS, ApprovedHSS, ActualSurg, ApprovedSurg, ActualAmb, ApprovedAmb)
声明:
SELECT d.CASNumber, d.ClaimVersion, v.Item, v.Actual, v.Approved
FROM Data d
CROSS APPLY (VALUES
('HSS', d.ActualHSS, d.ApprovedHSS),
('Surg', d.ActualSurg, d.ApprovedSurg),
('Amb', d.ActualAmb, d.ApprovedAmb)
) v (Item, Actual, Approved)
结果:
CASNumber ClaimVersion Item Actual Approved
----------------------------------------------
GN00000068 1 HSS 819.64 819.64
GN00000068 1 Surg 190.00 120.00
GN00000068 1 Amb 1232.00 1142.00
【讨论】:
以上是关于UnPivot 多列 MSSQLServer的主要内容,如果未能解决你的问题,请参考以下文章