我有如下因素表test
:如何计算两个分开的行中同一列的商?
MonthNumber Fees FeesName
1 10 A
2 22 A
3 25 A
1 11 B
2 25 B
3 28 B
3 8 C
3 2 D
3 3 E
我找Fees(A)/Fees(B)
,每个MonthNumber
。
我有如下因素表test
:如何计算两个分开的行中同一列的商?
MonthNumber Fees FeesName
1 10 A
2 22 A
3 25 A
1 11 B
2 25 B
3 28 B
3 8 C
3 2 D
3 3 E
我找Fees(A)/Fees(B)
,每个MonthNumber
。
使用轴:
;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
+1。如果你想执行浮点除法,你可能想把'Fees'作为'FLOAT'或者将其中一个操作数与'1.0'相乘,即'Fees * 1.0' – 2014-09-24 08:29:26
@wewesthemenace是的,我正在考虑将好。但是,我决定坚持所给予的,这并不多。 – 2014-09-24 08:40:14
你提的问题是非常稀少的,但如果我理解正确,那么你想是这样的:
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'
基本上,加入了对表本身并运行你划分,你将通常。
你自己尝试过吗? – 2014-09-24 08:03:08