2016-06-14 10 views
2

派生テーブルを使用して、合計の候補リストと合計の合計をカウントしようとしていますが、機能していません。派生テーブルの複数カウント

select (SELECT COUNT(ID) FROM Dtable WHERE Is_shortlisted=1) AS TOTALSHORLISTED,   
     (SELECT COUNT(ID) FROM Dtable WHERE Is_Interested=1) AS TOTALINERESTED 
from (
     SELECT BM.ID, 
       BM.Is_Interested, 
       BM.Is_shortlisted, 
       BM.Business_Masla_Status_ID 
     FROM Business_Maslahal BM 
     INNER join Vw_MaslaInfo MI 
      on BM.[MaslaHal_ID]=MI.ID and BM.ID=2 AND MI.Masla_status_ID IN(1,2) 
) Dtable 

答えて

2

実際に、あなたも、派生テーブルは必要ありません。

SELECT SUM(CASE WHEN Is_shortlisted=1 THEN 1 ELSE 0 END) AS TOTALSHORLISTED, 
     SUM(CASE WHEN Is_Interested=1 THEN 1 ELSE 0 END) AS TOTALINERESTED 
FROM Business_Maslahal BM 
INNER join Vw_MaslaInfo MI 
ON BM.[MaslaHal_ID]=MI.ID 
WHERE and BM.ID=2 
AND MI.Masla_status_ID IN(1,2) 

私はON句からの条件のいくつかをも移動しましたWHERE句に追加します。結果には影響しませんが、クエリをより読みやすくします。

+0

ニース!私はサブクエリを使用せずに書き直すために怠惰だった:) – gofr1

+0

ありがとう、私はこれがより効率的なWAだと思う。 –

1

この方法を試してみてください:

select SUM(CASE WHEN Is_shortlisted=1 THEN 1 ELSE 0 END) AS TOTALSHORLISTED, 
     SUM(CASE WHEN Is_Interested=1 THEN 1 ELSE 0 END) AS TOTALINERESTED 
from (
    SELECT BM.ID, 
      BM.Is_Interested, 
      BM.Is_shortlisted, 
      BM.Business_Masla_Status_ID 
    FROM Business_Maslahal BM 
    INNER join Vw_MaslaInfo MI 
     on BM.[MaslaHal_ID]=MI.ID and BM.ID=2 AND MI.Masla_status_ID IN(1,2) 
) Dtable 
関連する問題