SQL枢轴问题
我有数据象下面这样:SQL枢轴问题
Year January Feb March April
2017 20 15 7 25
是否可以格式化数据
Year Month Value
- 2017 January 20
- 2017 Feb 15
- 2017 March 7
- 2017 April 25
非常感谢你的帮助。我一直试图达到这个数小时,但我无法。
这是unpivot
,但我更喜欢使用apply
:
select v.*
from t outer apply
(values (t.year, 'January', t.January),
(t.year, 'Feb', t.Feb),
(t.year, 'March', t.March),
(t.year, 'April', t.April)
) v(year, month, value);
apply
实现所谓的 “横向连接” 的东西。这很像一个可以返回多个列的相关子查询。横向连接非常强大 - 未经处理只是他们所做事情的开始。但不透明是开始了解它们的一种方式。
谢谢戈登,你有什么理由为什么你喜欢申请undeivot – Agga
@Agga。 。 。我想我在问题中解释了这一点。 'apply'是一个通用的,强大的运营商。 'unpivot'只存在于一个特定的用例中。 –
您可以使用UNPIVOT
。
DECLARE @T TABLE (Year INT, January INT, Feb INT, March INT, April INT)
INSERT INTO @T VALUES(2017,20,15,7,25)
SELECT [Year], [Month], [Value] FROM @T
UNPIVOT([Value] FOR [Month] IN([January], [Feb], [March], [April])) AS UNPVT
结果
Year Month Value
----------- ----------- -----------
2017 January 20
2017 Feb 15
2017 March 7
2017 April 25
你真棒!有效 – Agga
所以[许多](https://stackoverflow.com/questions/18617243/sql-unpivot-multiple-columns-data)[重复](HTTPS://计算器.COM /问题/ 19055902/UNPIVOT-与列名称)。 –