SQL 从 3 列转换为 2 列
SQL convert from 3 to 2 columns
我正在尝试将 3 列转换为 2 列。有没有一种方法可以通过下面的示例或其他方式来实现?
例如
Year Temp Temp1
2015 5 6
进入:
Year Value
Base 5
2015 6
您可以使用 CROSS APPLY
和行构造函数:
SELECT s.*
FROM t
CROSS APPLY(VALUES('Base', Temp),(CAST(Year AS NVARCHAR(100)), Temp1)
) AS s(year,value);
这叫unpivot,pivot正好相反(把2列变成更多)。
你可以用一个简单的 UNION ALL
:
SELECT 'Base',s.temp FROM YourTable s
UNION ALL
SELECT t.year,t.temp1 FROM YourTable t
这取决于你在评论中写的内容,如果年份是固定的,你可以将其替换为'2015'
您的问题有多个答案。使用 UNION ALL
似乎是最简单的解决方案。
我建议阅读此线程 Converting Columns into rows with their respective data in sql server,因为它提供了更多详细信息,您可以尝试并测试不同的解决方案如何适合您。
我正在尝试将 3 列转换为 2 列。有没有一种方法可以通过下面的示例或其他方式来实现?
例如
Year Temp Temp1
2015 5 6
进入:
Year Value
Base 5
2015 6
您可以使用 CROSS APPLY
和行构造函数:
SELECT s.*
FROM t
CROSS APPLY(VALUES('Base', Temp),(CAST(Year AS NVARCHAR(100)), Temp1)
) AS s(year,value);
这叫unpivot,pivot正好相反(把2列变成更多)。
你可以用一个简单的 UNION ALL
:
SELECT 'Base',s.temp FROM YourTable s
UNION ALL
SELECT t.year,t.temp1 FROM YourTable t
这取决于你在评论中写的内容,如果年份是固定的,你可以将其替换为'2015'
您的问题有多个答案。使用 UNION ALL
似乎是最简单的解决方案。
我建议阅读此线程 Converting Columns into rows with their respective data in sql server,因为它提供了更多详细信息,您可以尝试并测试不同的解决方案如何适合您。