如何使用pivot函数将这些行传输到列?

时间:2014-10-14 06:54:38

标签: sql sql-server

去了MSDN然后回来了,但我仍然对如何使用pivot功能感到困惑。我如何转换以下代码以将行传输到列?

SELECT
 YEAR(hiredate) AS Year, COUNT(*) AS Count
FROM 
 Faculty
GROUP BY 
 YEAR(hiredate)

1 个答案:

答案 0 :(得分:1)

这样的事情应该这样做:

SELECT  pvt.[2010], pvt.[2011], pvt.[2012], pvt.[2013], pvt.[2014]
FROM    (   SELECT  [Year] = DATEPART(YEAR, HireDate), V = 1
            FROM    Faculty
        ) AS f
        PIVOT
        (   COUNT(V)
            FOR [Year] IN ([2010], [2011], [2012], [2013], [2014])
        ) AS pvt;

PIVOT不允许您使用列上的函数进行透视(例如YEAR(HireDate)),也不允许COUNT(*),因此您需要将函数放入子查询中,并创建一个用于计数的列(在此示例中为V)。