2016-04-10 10 views
0

私はいくつかのヘルプを使用できます。 CaseにLike文を使用し、日付にWhere句を使用して、フォルトコードの数をカウントするクエリがあります。私は二次的な質問と組合わせる。違いは日付だけです。それは動作しますが、値を返しますSQL Unionクエリは異なる列にカウントされます

Fault Code  Count 
    20k   71 
    60k   167 
    20k   86 
    60k   178 

「Count」列の2次カウントを返します。ただし、別の列を追加したい。例:

Fault Code CountA  CountB 
    20k   71   86 
    60k   167  178 

私は一時テーブルを作成しますか?

ここに私のコードです。

SELECT 
    CASE 
    WHEN FaultCode LIKE '60%' THEN '60k' 
    WHEN FaultCode LIKE '20%' THEN '20k' 
    END AS FaultCode 
    , COUNT(FaultCode) AS Day1 
    FROM RmaSummary 
    Where CreationTime > '2016-03-30' AND CreationTIme < '2016-03-31' AND 
    ClosedTime Is null AND (FaultCode LIKE '60%' OR FaultCode LIKE '20%') 
    AND FaultCode <> '20000' AND FaultCode <> '60052' AND FaultCode <> '0' 
    GROUP BY 
    CASE 
    WHEN FaultCode LIKE '60%' THEN '60k' 
    WHEN FaultCode LIKE '20%' THEN '20k' 
    END 
    Union All 
    SELECT 
    CASE 
    WHEN FaultCode LIKE '60%' THEN '60k' 
    WHEN FaultCode LIKE '20%' THEN '20k' 
    END AS FaultCode 
    , COUNT(FaultCode) AS Day2 
    FROM RmaSummary 
    Where CreationTime > '2016-03-31' AND CreationTIme < '2016-04-01' AND 
    ClosedTime Is null AND (FaultCode LIKE '60%' OR FaultCode LIKE '20%') 
    AND FaultCode <> '20000' AND FaultCode <> '60052' AND FaultCode <> '0' 
    GROUP BY 
    CASE 
    WHEN FaultCode LIKE '60%' THEN '60k' 
    WHEN FaultCode LIKE '20%' THEN '20k' 
    END 
+0

使用PIVOTはそれを – Squirrel

答えて

1

期待形式であなたの結果を取得する代わりにUNIONの使用Conditional Aggregation

これは、指定した日付範囲内でのみfaultcode秋レコードをカウントします

SELECT CASE 
     WHEN faultcode LIKE '60%' THEN '60k' 
     WHEN faultcode LIKE '20%' THEN '20k' 
     END  AS FaultCode, 
     Count(CASE 
       WHEN creationtime > '2016-03-30' 
        AND creationtime < '2016-03-31' THEN faultcode 
      END) AS Day1, 
     Count(CASE 
       WHEN creationtime > '2016-03-31' 
        AND creationtime < '2016-04-01' THEN faultcode 
      END) AS Day2 
FROM rmasummary 
WHERE closedtime IS NULL 
     AND (faultcode LIKE '60%' 
       OR faultcode LIKE '20%') 
     AND faultcode <> '20000' 
     AND faultcode <> '60052' 
     AND faultcode <> '0' 
GROUP BY CASE 
     WHEN faultcode LIKE '60%' THEN '60k' 
     WHEN faultcode LIKE '20%' THEN '20k' 
     END 
+0

恐ろしいを行うには!ちょうど私が必要なもの。どうもありがとうございました。大変感謝しています。 – EMIE

+1

@EMIE - 答えがあなたを助けてくれてうれしいです。答えの左側にあるチェックマークをクリックして回答を受け入れてください。ありがとう。 – Utsav

関連する問題