gpt4 book ai didi

sql - T-SQL pivot where 子句

转载 作者:行者123 更新时间:2023-12-05 08:33:54 25 4
gpt4 key购买 nike

在 SQL Server 中,我想要 PIVOT 一个表并添加一个 WHERE 子句,但我无法弄清楚语法。

数据

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

现在我只想从 View 中获取包含我将 PIVOT 的年份的行,所以我想添加

年份(2012、2013、2014)

我尝试了什么

FROM SOME_VIEW 之后放置 WHERE

SELECT
*
FROM SOME_VIEW WHERE YEAR IN (2012, 2013, 2014)
PIVOT (SUM(AMOUNT) FOR [YEAR] IN ([2012], [2013], [2014])) AS PIVOTED

我得到:关键字“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

结果:

enter image description here

关于sql - T-SQL pivot where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35319161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com