SQL-在列中转置不同的行

我从批量插入中有1个表(之前无法修改),我需要将“ VALUES”列中的所有行转置为单列。除了“年份”(从0到50)和“值”列外,其他3列均填充有唯一值(例如:在年份0中,大小为“ L”,颜色为“绿色”,价格为“ 10”,这个尺寸,颜色和价格值在我的整个50年中都是不变的。

我想在名为“ VALUE1”,“ VALUE2”,“ VALUE3”等的列中输出所有“ VALUES”,其中数字1,2,3代表所考虑的年份。

CREATE TABLE #CURVE(
YEAR INT, 
SIZE VARCHAR(100),
COLOR VARCHAR(100),
PRICE VARCHAR(100), 
VALUES FLOAT
)
评论
  • 詹驰婷
    詹驰婷 回复

    我们需要知道一年中在“值”列中期望多少个值? 否则查询如下所示:

    SELECT [YEAR], [SIZE], [COLOR], [PRICE], [1] as [Value1], [2] as [Value2], [3] as [Value3]
    FROM (
        SELECT *, ROW_NUMBER() OVER(PARTITION BY [YEAR], [SIZE], [COLOR], [PRICE] ORDER BY (SELECT NULL)) ID
        FROM #CURVE c
    ) t
    PIVOT(MAX([Value]) FOR ID IN ([1], [2], [3]])) p