2016-02-26 57 views
0

我必须得到两个count语句的条件百分比,但我不能得到小数正确,我得到两个很多行。我只需要一个百分比数字的行。这是我的。两个select语句的百分比

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列是一个整数,它不能有小数。但百分比的最终结果应该有一个数字超过十进制(14.1%)所以我试图CAST的SELECT语句,我一直在AS上得到一个错误。

CAST((SELECT...FROM...WHERE) AS DECIMAL (18,2)) 

让我知道我该怎么做。

+0

我想了解一下在底部的MYTABLE'的'目的,因为没有其他人似乎引用它 –

回答

0

问题是你的sum(CAST(TXN AS BIGINT))被返回一个整数,所以划分被转换为整数。

简单的把戏,通过1.0乘这样的分工返回小数

(
     SELECT sum(CAST(TXN AS BIGINT)) AS [TXN] 
     FROM TXNTABLE1 
     WHERE MONTH = '20130701' AND 
     TYPE = 'A' 
    ) * 1.0 
    /