我必须得到两个带有条件的计数语句的百分比,但我不能得到小数正确,我得到两行。我只需要一行百分比数字。这就是我所拥有的。
SELECT (
(
SELECT sum(CAST(TXN AS BIGINT)) AS [TXN]
FROM TXNTABLE1
WHERE MONTH = '20130701' AND
TYPE = 'A'
)
/
(
SELECT sum(CAST(TXN AS BIGINT)) AS [TXN]
FROM TXNTABLE1
WHERE MONTH = '20130701' AND
(
TYPE = 'A' OR
TYPE = 'B' OR
TYPE = 'C' OR
TYPE = 'D' OR
)
AND
(
PLANT = 'GREEN' OR
PLANT = 'BLUE' OR
PLANT = 'RED'
)
)
) *100
FROM MYTABLE
TXN列是一个int,它不能有小数。但是百分比的最终结果应该有一个超过小数的数字(14.1%)所以我试图CAST SELECT语句,并且我在AS上不断收到错误。
CAST((SELECT...FROM...WHERE) AS DECIMAL (18,2))
让我知道我应该做些什么。
答案 0 :(得分:0)
问题是你的1.0
返回一个整数,所以除法被转换为整数。
简单技巧,乘以 (
SELECT sum(CAST(TXN AS BIGINT)) AS [TXN]
FROM TXNTABLE1
WHERE MONTH = '20130701' AND
TYPE = 'A'
) * 1.0
/
,以便除法返回小数
{{1}}