去了MSDN然后回来了,但我仍然对如何使用pivot功能感到困惑。我如何转换以下代码以将行传输到列?
SELECT
YEAR(hiredate) AS Year, COUNT(*) AS Count
FROM
Faculty
GROUP BY
YEAR(hiredate)
答案 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
)。