将列标题放入行的 SQL 查询[已关闭]

问题描述 投票:0回答:1

我需要有关 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将永远是独一无二的。我已经尝试过使用枢轴/逆枢轴进行一些操作,但无法弄清楚。

sql sql-server
1个回答
1
投票

这是一个标准的逆透视 + 透视,但您需要稍微准备一下您的列:

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,而且它们不能很好地协同工作。

其余的是标准枢轴,不确定是什么绊倒了你。

© www.soinside.com 2019 - 2024. All rights reserved.