Rob*_*roj 1 sql t-sql sql-server pivot
在SQL Server中,我想要PIVOT表并添加WHERE子句,但我无法弄清楚语法。
Run Code Online (Sandbox Code Playgroud)dbo.SOME_VIEW YEAR AMOUNT ==================== 2014 1 2013 2 2012 5.6 2011 574 2010 123
SELECT
*
FROM SOME_VIEW
PIVOT (SUM(AMOUNT) FOR [YEAR] IN ([2012], [2013], [2014])) AS PIVOTED
Run Code Online (Sandbox Code Playgroud)
现在,我只想从视图中获得将要年份的行,因此我想添加
WHERE YEAR IN (2012, 2013, 2014)
放在WHERE之后FROM SOME_VIEW
SELECT
*
FROM SOME_VIEW WHERE YEAR IN (2012, 2013, 2014)
PIVOT (SUM(AMOUNT) FOR [YEAR] IN ([2012], [2013], [2014])) AS PIVOTED
Run Code Online (Sandbox Code Playgroud)
我得到:Incorrect syntax near the keyword 'PIVOT'。当我WHERE在末尾添加时,我得到了Invalid column name 'YEAR'。
使用PIVOT时在哪里可以添加WHERE子句?
为了表现。我认为我有1990年以来的岁月,但我只想要最后三年。我希望当我添加一个可以提高性能的地方。
据我了解,您想限制传递给PIVOT的年份。
您可以通过使用通用表表达式来做到这一点。
这应该为您工作:
;WITH CTE AS (SELECT
*
FROM #SOME_VIEW
WHERE [YEAR] IN (2012, 2013, 2014))
SELECT
*
FROM CTE
PIVOT (SUM(AMOUNT) FOR [YEAR] IN ([2012], [2013], [2014])) AS PIVOTED
Run Code Online (Sandbox Code Playgroud)
结果: