2016-04-10 20 views
0

Yardım alabilirim. Bir Vaka ve Like deyimini kullanarak, bir Where cümlesiyle tarihte hata kodlarının sayısını sayan bir sorgum var. Sonra ikincil bir sorgu ile birleştirin. Tek fark tarihtir. Bu çalışıyor ancakSQL Sendromu Farklı Sütunlara Sayma

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

O 'Sayı' Sütun altında ikincil sayısını döndürür değerleri döndürür. Ancak, başka bir sütun eklemek istiyorum. Örnek:

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

Herhangi bir öneriniz var mı? Geçici masa oluşturuyor muyum?

İşte kodum.

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

Kullanım Pivot – Squirrel

cevap

1

Kullanım Conditional Aggregation yerine UNION ait bekIiyorduk formatta sonuç alacak hangi.

Bu belirtilen tarih aralığındaki ile sadece faultcode sonbahar kayıtları sayar

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

Müthiş yapmak !!! Tam ihtiyacım olan şey. Çok teşekkür ederim. Oldukça memnun olarak. – EMIE

+1

@EMIE - Cevabın size yardımcı olduğuna sevindim. Cevabın solundaki kene sembolü üzerine tıklayarak cevabı kabul ediniz, böylece kapatılabilir. Teşekkürler. – Utsav

İlgili konular