我需要一個SQL查詢來爲每個支付會費的公司在2015年和2016年的每個月返回一行。由此產生的數據集將顯示公司未支付空值的月份。問題是,如果他們沒有支付會費,他們將不會在數據庫中輸入數據,因此不會出現超過一個月的行。下面是該查詢:即使數據從表中缺失,也顯示一行
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公司每個月都在2015年支付,除了六月份我就需要一個公司對於公司XYZ的六月份行具有空值或零或其他指標,因此他們錯過了付款。就目前而言,行被簡單地省略,因爲數據不存在,並且很難從數千或行中找到缺失的行。
我意識到它可能是一種不同類型的連接或某些東西,但我只是沒有得到它的工作。
什麼版本的SQL Server? –
對不起。 SQL 2012.特別是12.0.2000.8 – ekim110575