0

月ごとの総売上を表示するクエリがあります。ただし、販売がない月もあります。クエリ結果でその月に 0 の値を取得するにはどうすればよいですか?

SELECT
    p.Part,
    SUM(s.Sales) AS Sales,
    MONTH(s.SalesDate) AS Month_Sold
FROM
    Parts p
    LEFT OUTER JOIN Sales s ON p.Part = s.Part
GROUP BY
    p.Part,
    MONTH(s.SalesDate)
ORDER BY
    p.Part,
    Month_Sold
4

1 に答える 1

2

SUM(ISNULL(s.Sales, 0))集計によって NULL 値が削除されないようにします。ただし、販売データからも月に依存しているため、販売データに月がなくてもすべての月を表示できるように、月を検索する必要があります。

したがって、次のようなものです。

    ;WITH months AS
    (
        SELECT 1 AS mo
        UNION ALL
        SELECT mo +1
        FROM months
        WHERE mo < 12
    )

    SELECT p.Part, SUM(s.Sales) AS Sales, mo AS Month_Sold 
    FROM Parts p 
    CROSS APPLY months
    LEFT OUTER JOIN Sales s 
        ON p.Part = s.Part 
        AND months.mo = MONTH(s.SalesDate) 
    GROUP BY p.Part, months.mo ORDER BY p.Part, Month_Sold
于 2013-03-15T21:08:05.117 に答える