2015-06-30 5 views
-2

Может кто-нибудь, пожалуйста, помогите мне, как закодировать ниже scenerio в sql.Вывод в специальном формате

DECLARE @T TABLE 
(
Year VARCHAR (50), 
Month VARCHAR (50), 
GROUPS VARCHAR (50), 
SALESPERNO VARCHAR (50), 
Net VARCHAR (50) 

) 

INSERT @T 

SELECT '2014','1','A','6607','109.34' UNION ALL 
SELECT '2014','2','A','6607','13.42' UNION ALL 
SELECT '2014','3','A', '6607','359.41' UNION ALL 
SELECT '2014','1','A', '6608','99.52' UNION ALL 
SELECT '2014','2','A','6608','95.62' UNION ALL 
SELECT '2014','3','A', '6608','89.63' UNION ALL 
SELECT '2014','1','B','8888','340.95' UNION ALL 
SELECT '2014','2','B','8888','652.25' UNION ALL 
SELECT '2014','3','B','8888','352.26' 

SELECT * FROM @T 

здесь: месяц 1 = Jan, 2 = февраль, 3 = Мар

Выход сумма сети для конкретного salesperno и групп для янв фев мар и общей, как это:

January| February | March| QFY | SALES_GROUP |SALESPERSON_NUMBER  
109.34 | 13.42 | 359.41| 482.17| A   | 6607 
99.52 | 95.62 | 89.63 | 284.77| A   | 6608  
340.95 | 652.25 | 352.26| 1345.46| B   | 8888 
+1

Google и узнать о заявлении CASE, в SQL. –

ответ

0

Вы можете сделать это несколькими способами. Поскольку Tab Alleman предложил один из способов с помощью CASE и GROUP BY.

select 
    SUM(CASE WHEN [Month]=1 THEN [NET] END) [January], 
    SUM(CASE WHEN [Month]=2 THEN [NET] END) [February], 
    SUM(CASE WHEN [Month]=3 THEN [NET] END) [March], 
    SUM([NET]) [QFY], 
    [GROUPS] [SALES_GROUP], 
    [SALESPERNO] [SALESPERSON_NUMBER] 
from @T 
group by 
    [GROUPS], 
    [SALESPERNO] 

Это еще один способ, с PIVOT

SELECT 
    [1] [January], 
    [2] [February], 
    [3] [March], 
    [1]+[2]+[3] [QFY], 
    [GROUPS] [SALES_GROUP], 
    [SALESPERNO] [SALESPERSON_NUMBER] 
FROM @T 
PIVOT (
    SUM(NET) 
    FOR [Month] in ([1],[2],[3]) 
) pvt 
+0

Большое спасибо. – akhrot

Смежные вопросы