我有兩個表,我想通過組合這個表來獲取我的應用程式中每月攝取的資料,并且該計數還應包括零。如果應用程式中沒有攝取資料,那么它也應該出現在結果集中。但是使用下面的查詢我無法包含零計數。不知道我在這里做錯了什么。
`select count(*) as Total_Count, appprofile as Application
from Reference r
LEFT OUTER JOIN docapplication d ON
d.did = r.did where
d.appprofile in ('EbsApp_0','EbsApp_2','EbsApp_3','EbsApp_4','EbsApp_5','EbsApp_6','EbsApp_8','EbsApp_9','EbsApp_10','EbsApp_11','EbsApp_12','EBS_DOC1','EBS_DOC2')
and
r.CREATEDATE >= '1-Jul-21 12.00.00.000000000 AM' and
r.CREATEDATE <= '31-JUL-21 11.59.00.000000000 PM'
group by d.appprofile
order by d.appprofile;`
結果:

uj5u.com熱心網友回復:
看起來您想計算每個應用程式的參考數。所以從應用程式和外連接參考中選擇,反之亦然。使用不可為空的參考列進行計數。它在外部連接的行中為空,因此不計算在內,如果應用程式沒有參考,則結果為零。
請注意,外連接表上的條件屬于ON子句。如果應用程式沒有參考匹配,則外部連接行中的參考列將為空。如果您在WHERE子句中放置條件(例如where outer_joined.column > 1),您將關閉外部連接的行,并以僅內部連接結束。
我還修改了你的日期比較。永遠不要比較日期和字串。使用日期文字或時間戳文字。
select
count(r.did) as total_count,
d.appprofile as application
from docapplication d
left outer join reference r on r.did = d.did
and r.createdate >= date '2021-07-01'
and r.createdate < date '2021-08-01'
where d.appprofile in ('EbsApp_0', 'EbsApp_2', 'EbsApp_3', 'EbsApp_4', 'EbsApp_5',
'EbsApp_6', 'EbsApp_8', 'EbsApp_9', 'EbsApp_10', 'EbsApp_11',
'EbsApp_12', 'EBS_DOC1', 'EBS_DOC2')
group by d.appprofile
order by d.appprofile;
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/315223.html
上一篇:使用列中的子字串連接資料
下一篇:如何依靠加入具有2個條件的表?
