我正在尝试将3列转换为2列。是否可以使用以下示例或其他方式来实现此目标?
例如。
例如。
Year Temp Temp1
2015 5 6
转换:
Year Value
Base 5
2015 6
Year Temp Temp1
2015 5 6
转换:
Year Value
Base 5
2015 6
UNION ALL
实现此操作:SELECT 'Base',s.temp FROM YourTable s
UNION ALL
SELECT t.year,t.temp1 FROM YourTable t
根据您在评论中写的内容,如果年份是恒定的,您可以将其替换为“2015”
你的问题有多个答案。使用UNION ALL
似乎是最简单的解决方案。
我建议阅读这个帖子在SQL Server中将列转换为行及其相应数据,因为它提供了更多细节,你可以尝试和测试不同的解决方案来找到最适合你的方法。
你可以使用CROSS APPLY
和行构造函数:
SELECT s.*
FROM t
CROSS APPLY(VALUES('Base', Temp),(CAST(Year AS NVARCHAR(100)), Temp1)
) AS s(year,value);
PIVOT
操作符可以用于此操作,但它只存在于 MSSQL 中。 - Smileek