0

グラフに表示するために、SQL Server 出荷システムのインシデント イベント数の年初来の合計を集計しようとしています。

私が現時点で持っているもの:

SELECT EventType.Name AS [Incident Name], COUNT(Event.ID) AS [Occurrence]
FROM  Event
INNER JOIN
        PortEvent ON Event.PortEventID = PortEvent.ID
INNER JOIN
        EventType ON PortEvent.EventID = Event.ID

WHERE Event.IsIncident = 1 and Event.Date BETWEEN (Start of Year & Now)
GROUP BY Event.Name

これが返すもの;

Incident Name       Occurrence

Incident 1              1
Incident 3              4
Incident 4              7

私が欲しいもの:

Incident Name       Occurrence

Incident 1              1
Incident 2              0
Incident 3              4
Incident 4              7
Incident 5              0

これを簡単に行う方法はありますか?SOでいくつかの例を見てきましたが、隣接するテーブルのみです。

ありがとう

4

4 に答える 4

0

左結合を使用するだけでは不十分です。クエリの順序を変更して、すべてのイベント タイプが一番左のレコードセットに配置されるようにする必要があります (これは、とにかく視覚化する方法です)。さらに、where 句を削除してイベント テーブルの結合に追加する必要があります。

SELECT
    EventType.Name AS [Incident Name], COUNT(Event.ID) AS [Occurrence]
FROM  EventType
LEFT JOIN PortEvent ON Event.PortEventID = PortEvent.ID
LEFT JOIN Event ON PortEvent.EventID = Event.ID and Event.IsIncident = 1 and Event.Date BETWEEN (Start of Year & Now)
GROUP BY Event.Name
于 2013-10-04T12:59:57.140 に答える