两个select语句的百分比

时间:2016-02-26 23:00:01

标签: sql casting percentage

我必须得到两个带有条件的计数语句的百分比,但我不能得到小数正确,我得到两行。我只需要一行百分比数字。这就是我所拥有的。

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))

让我知道我应该做些什么。

1 个答案:

答案 0 :(得分:0)

问题是你的1.0返回一个整数,所以除法被转换为整数。

简单技巧,乘以 ( SELECT sum(CAST(TXN AS BIGINT)) AS [TXN] FROM TXNTABLE1 WHERE MONTH = '20130701' AND TYPE = 'A' ) * 1.0 / ,以便除法返回小数

{{1}}