我需要有关 SQL 查询的帮助,该查询基本上采用如下所示的列/数据:
NDC | Address | Customer
1 | 100 | Bobs
2 | 200 | USA Med
3 | 300 | Pharmville
然后把它变成这样:
NDC | 1 | 2 | 3
Address | 100 | 200 | 300
Customer| Bobs | USA Med | Pharmville
所以基本上,我需要 NDC 编号作为列标题。之前使用的标题将变成“行”。 NDC将永远是独一无二的。我已经尝试过使用枢轴/逆枢轴进行一些操作,但无法弄清楚。
这是一个标准的逆透视 + 透视,但您需要稍微准备一下您的列:
SELECT name, [1],[2],[3]
FROM
(
SELECT name, val, NDC
FROM (
VALUES (1, 100, N'Bobs')
, (2, 200, N'USA Med')
, (3, 300, N'Pharmville')
) t (NDC,Address,Customer)
CROSS APPLY (VALUES('Address', cast(address AS nvarchar(100))), ('Customer', Customer)) cv(name, val)
) x
PIVOT(MAX(val) FOR NDC IN ([1],[2],[3])) pv
我更喜欢交叉应用 UNPIVOT,因为你有 INT 和 NVARCHAR,而且它们不能很好地协同工作。
其余的是标准枢轴,不确定是什么绊倒了你。