gpt4 book ai didi

sql-server - 同一列上具有多个聚合的 T-SQL Pivot

转载 作者:行者123 更新时间:2023-12-02 23:38:27 25 4
gpt4 key购买 nike

这似乎应该是一个常见的需求,但我不知道如何使用 T-SQL PIVOT 函数来做到这一点。具体来说,我想计算数据透视列值上的列的 AVG 和 STDEV。数据看起来像这样(省略了很多数据,但这触及核心):

--------------------------------------------------------------------------
ID Year PersonID Score
--------------------------------------------------------------------------
106 2001 1 20
107 2002 1 30
108 2003 1 40
109 2004 1 50
106 2002 2 20
107 2003 2 50
108 2004 2 30
109 2005 2 10
--------------------------------------------------------------------------

我想看到以下输出

--------------------------------------------------------------------------
NonPivotCol1 NonPivotCol2 2001_Mean 2001_Avg 2002_Mean 2002_Avg Etc
--------------------------------------------------------------------------
Some Value Some Value 32 5.2 28 3.1
Etc.
--------------------------------------------------------------------------

我需要恢复到旧的 CASE 语句逻辑吗?

谢谢!

最佳答案

是的。

只需使用旧式CASE 语法即可。

SELECT AVG(CASE WHEN Year = 2001 THEN Score END) AS 2001_Avg,
STDEV(CASE WHEN Year = 2001 THEN Score END) AS 2001_StDev /*...*/

PIVOT 无论如何只是(不太通用的)语法糖。

Oracle supports multiple aggregatesPIVOT 中,但 TSQL 没有。

关于sql-server - 同一列上具有多个聚合的 T-SQL Pivot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18176138/

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