1

SQL Server 2008 R2

サンプルデータ:

ownership  exact_opening_date
Type1       3/1/2002
Type1       1/4/2004
Owned       3/1/2002
Owned       3/31/2003
Owned       6/30/2004

所有権の種類ごとに年ごとの現在の合計を取得したいが、その年に値がない場合でも現在の合計を維持したい:

ownership open_date run_total
Type 1    2002      1
Type 1    2003      1  <-- here's my trouble
Type 1    2004      2

現在の合計を取得できますが、実際にその年の値がない場合、その現在の合計を含める方法がわかりません。

これが私が今していることです:

WITH cte (
ownership
,open_date
,ct
)
AS (
    SELECT ownership
        ,year(exact_opening_date) AS open_date
        ,count(*) AS ct
    FROM studio_master
    GROUP BY ownership
        ,year(exact_opening_date)
    )
SELECT d1.ownership
    ,d1.open_date
    ,sum(d2.ct) AS run_total
FROM cte d1
LEFT JOIN cte d2 ON d1.open_date >= d2.open_date
    AND d1.ownership = d2.ownership
GROUP BY d1.ownership
    ,d1.open_date
    ,d1.ct
ORDER BY d1.ownership
    ,d1.open_date

そこにある「行方不明」の合計年数を取得するにはどうすればよいですか?

4

1 に答える 1

4

結合する年のリストを使用できます。

年のリストのソースとして、この質問に対する受け入れられた回答の「Itzik のクロス結合 CTE メソッド」を使用できます: SQL、数値の補助テーブル

于 2013-03-16T23:28:35.983 に答える