2014-09-24 77 views

回答

1

使用轴:

;WITH CTE AS 
(
    SELECT MonthNumber, Fees, Feesname 
    FROM test 
    WHERE FeesName in ('A', 'B') 
) 
SELECT MonthNumber, [A]/[B] 
FROM cte 
PIVOT (SUM(Fees) FOR [Feesname] IN ([A], [B])) AS pvt 
ORDER BY MonthNumber 

如果你不喜欢旋转或者使用SQLSERVER 2005年或更旧

SELECT 
    MonthNumber, 
    SUM(CASE WHEN FeesName = 'A' THEN Fees END)/ 
    SUM(CASE WHEN FeesName = 'B' THEN Fees END) result 
FROM test 
WHERE FeesName in ('A', 'B') 
GROUP BY MonthNumber 
ORDER BY MonthNumber 
+0

+1。如果你想执行浮点除法,你可能想把'Fees'作为'FLOAT'或者将其中一个操作数与'1.0'相乘,即'Fees * 1.0' – 2014-09-24 08:29:26

+0

@wewesthemenace是的,我正在考虑将好。但是,我决定坚持所给予的,这并不多。 – 2014-09-24 08:40:14

1

你提的问题是非常稀少的,但如果我理解正确,那么你想是这样的:

SELECT A.Fees/B.Fees 
FROM test A 
    INNER JOIN test B ON A.MonthNumber = B.MonthNumber 
WHERE A.FeesName = 'A' AND B.FeesName = 'B' 

基本上,加入了对表本身并运行你划分,你将通常。

相关问题