2

クエリの作成についてサポートが必要です。

現在はこんな感じ

SELECT  
    COUNT(*) AS ALERTS,
    EXTRACT (YEAR FROM DATE) AS YEAR,
    EXTRACT (MONTH FROM DATE) AS MONTH,
    EXTRACT (DAY FROM DATE) AS DAY,
    HOST,
    ALERTLEVEL
FROM 
    ALERTS
WHERE
    EXTRACT (DAY FROM DATE) > EXTRACT (DAY FROM CURRENT_DATE) -7
    AND
    EXTRACT (MONTH FROM DATE) >= EXTRACT (MONTH FROM CURRENT_DATE) 
    AND
    HOST = 'HOST'
GROUP BY
    YEAR,MONTH,DAY,HOST,ALERTLEVEL
ORDER BY 
    YEAR ASC,MONTH ASC,DAY ASC, ALERTLEVEL ASC

結果:

ALERTS      YEAR    MONTH   DAY     HOST    ALERTLEVEL  
5           2013    9       5       HOST    1
64          2013    9       5       HOST    2
11          2013    9       5       HOST    3
15          2013    9       5       HOST    4
16          2013    9       8       HOST    2
2           2013    9       9       HOST    1

alertlevel に 1 つではなく 4 つの列を持ち、alertlevel ごとに 1 日あたりの列アラートを合計したいと思います。


望ましい結果

YEAR    MONTH   DAY HOST    ALERTLEVEL1 ALERTLEVEL2 ALERTLEVEL3 ALERTLEVEL4  
2013    9       5   HOST    5           64          11          15   
2013    9       8   HOST    0           16           0           0   
2013    9       9   HOST    2            0           0           0  

これは可能ですか?

助けてくれてありがとう!!

4

1 に答える 1

4
SELECT  
    COUNT(*) AS ALERTS,
    EXTRACT (YEAR FROM DATE) AS YEAR,
    EXTRACT (MONTH FROM DATE) AS MONTH,
    EXTRACT (DAY FROM DATE) AS DAY,
    HOST,
    sum(case when ALERTLEVEL = 1 then 1 else 0 end) as ALERTLEVEL1,
    sum(case when ALERTLEVEL = 2 then 1 else 0 end) as ALERTLEVEL2,
    sum(case when ALERTLEVEL = 3 then 1 else 0 end) as ALERTLEVEL3,
    sum(case when ALERTLEVEL = 4 then 1 else 0 end) as ALERTLEVEL4
FROM 
    ALERTS
WHERE
    EXTRACT (DAY FROM DATE) > EXTRACT (DAY FROM CURRENT_DATE) -7
    AND
    EXTRACT (MONTH FROM DATE) >= EXTRACT (MONTH FROM CURRENT_DATE) 
    AND
    HOST = 'HOST'
GROUP BY
    YEAR,MONTH,DAY,HOST
ORDER BY 
    YEAR ASC,MONTH ASC,DAY ASC
于 2013-10-02T08:20:26.680 に答える