I have data in following format
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
And I want it in following format
Client Business Unit 2010 2011 2012
BalckRock Pricing 6557 14428 11080
BalckRock Sales 11925 5199 5111
Basically the sum of USD amnt year wise, but years as the column heading
Can anyone help me in this ?
There are different ways, you can use PIVOT (static or dynamic depending on your needs) or you can simply use a 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]
Using PIVOT:
SELECT *
FROM ( SELECT Client, [Business Unit], [USD Amt], [Year]
FROM YourTable) T
PIVOT (SUM([USD Amt]) FOR [Year] IN ([2010],[2011],[2012])) PT
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With