2016-02-26 79 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 
    /