SQL 上的(未)透视表
(Un)pivoting tables on SQL
我正在尝试为 table 中的一些参数创建一个包含历史数据的矩阵。问题是,当我尝试旋转它时,它不起作用。使用以下代码
SELECT concept,
[1] '1993',
<...>,
[23] '2015'
FROM
(SELECT concept, YEAR(begin_date) as year, value
FROM params p WITH(NOLOCK)) AS st
PIVOT
(
SUM(value)
FOR year IN ([1], <...>, [23])
) AS pt
将return 只是一个充满 NULL 值的矩阵。另一方面,我使用其他查询得到了正确的值
SELECT pt.year 'Year',
[1],
<...>,
[38]
FROM
(SELECT concept, YEAR(begin_date) as year, value
FROM parameters p WITH(NOLOCK)) AS st
PIVOT
(
SUM(value)
FOR concept IN ([1], <...>, [38])
) AS pt
但是列和行应该是相反的。
造成这种情况的原因可能是什么?怎么解决的?
提前致谢
您有:
year IN ([1], <...>, [23])
这应该是
year IN ([1993], <...>, [2015])
当然还有 select 部分中的那些相同的列:
SELECT concept,
[1993],
<...>,
[2015]
我正在尝试为 table 中的一些参数创建一个包含历史数据的矩阵。问题是,当我尝试旋转它时,它不起作用。使用以下代码
SELECT concept,
[1] '1993',
<...>,
[23] '2015'
FROM
(SELECT concept, YEAR(begin_date) as year, value
FROM params p WITH(NOLOCK)) AS st
PIVOT
(
SUM(value)
FOR year IN ([1], <...>, [23])
) AS pt
将return 只是一个充满 NULL 值的矩阵。另一方面,我使用其他查询得到了正确的值
SELECT pt.year 'Year',
[1],
<...>,
[38]
FROM
(SELECT concept, YEAR(begin_date) as year, value
FROM parameters p WITH(NOLOCK)) AS st
PIVOT
(
SUM(value)
FOR concept IN ([1], <...>, [38])
) AS pt
但是列和行应该是相反的。 造成这种情况的原因可能是什么?怎么解决的? 提前致谢
您有:
year IN ([1], <...>, [23])
这应该是
year IN ([1993], <...>, [2015])
当然还有 select 部分中的那些相同的列:
SELECT concept,
[1993],
<...>,
[2015]