0

我有一个产生 5 列结果的函数(例如,10 行)。

该数据被插入到键值表中,因此我需要将其转换为 50 行的格式以进行插入。

目前我正在选择每列五次并将结果合并在一起。因为它是运行五次相同的查询,但每次只选择一列,这似乎非常低效。理想情况下,我只能运行一次查询,但将数据从 5 x 10 转换为 1 x 50。

因此,如果我的查询返回两行:[ID]、[ColA]、[ColB]、[ColC]、[ColD]、[ColE]

我想把它变成这样的格式:

[ID0],[ColA0]

[ID0],[ColB0]

[ID0],[ColC0]

[ID0],[ColD0]

[ID0],[ColE0]

[ID1],[ColA1]

[ID1],[ColB1]

.

.

4

2 回答 2

1

只需用您的数据替换 CTE,您就可以开始使用了。

;WITH CTE AS
(   SELECT 1 [ID], 'A1' [ColA], 'B1' [ColB], 'C1' [ColC], 'D1' [ColD], 'E1' [ColE]
    UNION ALL
    SELECT 2 [ID], 'A2' [ColA], 'B2' [ColB], 'C2' [ColC], 'D2' [ColD], 'E2' [ColE]
)
SELECT  [ID], [ColumnName], Value
FROM    CTE
        UNPIVOT
        (   Value
            FOR [ColumnName] IN ([ColA], [ColB], [ColC], [ColD], [ColE])
        ) upvt
于 2012-06-08T10:35:07.460 回答