gpt4 book ai didi

tsql - 在 sql 中使用 Sum 函数进行透视

转载 作者:行者123 更新时间:2023-12-02 06:20:25 26 4
gpt4 key购买 nike

我有以下格式的数据

Client       Business Unit    Year  Quarter     USD Amt
BalckRock Pricing 2010 Q1 234
BalckRock Pricing 2010 Q2 343
BalckRock Pricing 2010 Q3 545
BalckRock Pricing 2010 Q4 5435
BalckRock Pricing 2011 Q1 5425
BalckRock Pricing 2011 Q2 3524
BalckRock Pricing 2011 Q3 54
BalckRock Pricing 2011 Q4 5425
BalckRock Pricing 2012 Q1 545
BalckRock Pricing 2012 Q2 5445
BalckRock Pricing 2012 Q3 545
BalckRock Pricing 2012 Q4 4545
BalckRock Sales 2010 Q1 23
BalckRock Sales 2010 Q2 3434
BalckRock Sales 2010 Q3 4234
BalckRock Sales 2010 Q4 4234
BalckRock Sales 2011 Q1 3423
BalckRock Sales 2011 Q2 1
BalckRock Sales 2011 Q3 1341
BalckRock Sales 2011 Q4 434
BalckRock Sales 2012 Q1 421
BalckRock Sales 2012 Q2 42
BalckRock Sales 2012 Q3 434
BalckRock Sales 2012 Q4 4214

我想要以下格式

Client        Business Unit    2010    2011    2012
BalckRock Pricing 6557 14428 11080
BalckRock Sales 11925 5199 5111

基本上是 USD amnt year wise 的总和,但年份作为列标题

有人可以帮我吗?

最佳答案

有不同的方法,您可以使用PIVOT(静态或动态取决于您的需要)或者您可以简单地使用CASE:

SELECT  Client,
[Business Unit],
SUM(CASE WHEN [Year] = 2010 THEN [USD Amt] ELSE 0 END) [2010],
SUM(CASE WHEN [Year] = 2011 THEN [USD Amt] ELSE 0 END) [2011],
SUM(CASE WHEN [Year] = 2012 THEN [USD Amt] ELSE 0 END) [2012]
FROM YourTable
GROUP BY Client, [Business Unit]

使用PIVOT:

SELECT *
FROM ( SELECT Client, [Business Unit], [USD Amt], [Year]
FROM YourTable) T
PIVOT (SUM([USD Amt]) FOR [Year] IN ([2010],[2011],[2012])) PT

关于tsql - 在 sql 中使用 Sum 函数进行透视,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11348562/

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