UnPivot 多列 MSSQLServer

Sri*_*vas -1 sql t-sql sql-server sql-server-2014

我有一个 MSSQLServer 表如下:

CAS 号 声明版本 实际HSS 批准的HSS 实际外科手术 批准外科医师 实际Amb 批准的Amb
GN00000068 1 819.64 819.64 190 120 第1232章 第1142章

从上表中我正在寻找如下输出:

CAS 号 声明版本 物品 实际的 得到正式认可的
GN00000068 1 实际HSS 819.64 819.64
GN00000068 1 实际外科手术 190 120
GN00000068 1 实际Amb 第1232章 第1142章

任何专业指导都将受到高度赞赏。

感谢和问候

Zho*_*rov 5

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)
Run Code Online (Sandbox Code Playgroud)

陈述:

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)
Run Code Online (Sandbox Code Playgroud)

结果:

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
Run Code Online (Sandbox Code Playgroud)