2015年と2016年の各月の行を返すSQLクエリが必要です。結果として得られたデータセットには、企業がどの暦月にもヌル値で料金を支払っていない月が表示されます。問題は、彼らが会費を払わなかった場合、彼らはデータベースにエントリーを持たないので、月よりも行が出現しないということです。ここでは、クエリです:データがテーブルにない場合でも列を表示する
SELECT
case when n.co_id <>'' then n.co_id else n.ID end ID
,su.CONTINUOUS_SINCE
,n.COMPANY
,a.EFFECTIVE_DATE
, a.AMOUNT
FROM dbo.Name n
LEFT OUTER JOIN dbo.Activity a ON n.ID = a.ID
inner JOIN dbo.Loc_Info l ON n.ID = l.ID
inner JOIN dbo.Segment_Categories s ON l.CURRENT_SEGMENT = s.CODE
inner JOIN dbo.Subscriptions su on su.id=n.id
WHERE a.PRODUCT_CODE='rental' and n.MEMBER_TYPE in ('rb','rl') and a.EFFECTIVE_DATE Between '2015-07-01' And GetDate() AND a.ACTIVITY_TYPE='dues'
order by case when n.co_id <>'' then n.co_id else n.ID end, EFFECTIVE_DATE asc
会社はそれがうまくうまくいく毎月支払っている場合は、しかし、ポイントは私が必要とするので、XYZ社は、6月を除いて2015年に毎月支払われたと支払っていない企業を見つけることですNULL値を持つ会社XYZ、または支払を見落としたゼロまたはその他のインジケータの6月の行。今のように、行は単純に省略されます。これは、データが存在しないためで、数千または行のうち欠けている行を見つけることが難しいためです。
私はそれがおそらく異なる種類の結合または何かであることを認識していますが、私はうまく動作しません。あなたは数ヶ月のためにダミーのテーブルを作成することができます
どのバージョンのSQL Serverですか? –
申し訳ありません。 SQL 2012.特に12.0.2000.8 – ekim110575