2015-06-30 90 views
-2

任何人都可以帮助我如何在sql中编码下面的scenerio。以特殊格式输出

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 =一月,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

谷歌并了解SQL CASE语句。 –

回答

0

你可以用多种方法做到这一点。正如Tab Alleman建议的一种方法是在CASEGROUP 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

非常感谢Gents。 – akhrot