Sql-Server
連接兩個表並在單個查詢中返回數據和計數
我在 SQL Server 數據庫中有兩張表,一張有兩列,一張有四列:
tbl_email_list
email_list_id
int
(PK)
email_list_name
varchar
tbl_email-details
email_uniq_id
int
(PK)
email_list_id
int
(FK)
email_address
varchar
blacklist
bit
我想在一個應該返回的查詢中檢索數據
- tbl_email_list 中的所有電子郵件列表;
- 與特定 email_list_id 關聯的 email_address 總數;
- 列入白名單的電子郵件地址總數(其中 blacklist=0);
- 列入黑名單的電子郵件地址總數(其中 blacklist=1)。
select l.email_list_id, l.email_list_name, count(d.email_uniq_id) as full_count, count(case when d.blacklist = 0 then d.email_uniq_id end) as white_count, count(case when d.blacklist = 1 then d.email_uniq_id end) as black_count from tbl_email_list as l left join [tbl_email-details] as d on d.email_list_id = l.email_list_id group by l.email_list_id, l.email_list_name;
通過計算可能為空的事物,我們讓零出現在結果集中,這是一種非常有用的技術。在這裡,我對黑名單結果和整體(基於外連接)都這樣做。