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]