2014-09-24 80 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' 

基本上,加入了對錶本身並運行你劃分,你將通常。

相關問題