3
請考慮此腳本:保留組左表由
declare @Days table
([Day] int)
insert @Days values(1),(2),(3),(4),(5)
declare @Data table
(
ID int,
[Day] int,
[Name] Nvarchar(50),
[Status] bit
)
insert into @Data
values(1,1,'Nima',1),(2,2,'Arian',1),(3,2,'Nima2',0),(4,2,'Nima3',1),(5,3,'Nima4',0)
select y.[Day],count(Id)
from @Days y left join @Data d
on y.[Day] = d.[Day]
where Status=1
group by y.[Day]
這個查詢有這樣的結果:
Day (No column name)
1 1
2 2
,但我想這樣的結果:
Day (No column name)
1 1
2 2
3 0
4 0
5 0
我怎樣才能重寫上述查詢以獲得上述結果。
感謝
太好了! 。但是,你能解釋一下這個sql server的行爲嗎? – Arian
@Kerezo對於左側沒有匹配的行,_status_列的值將爲空。 where子句在連接之後應用,因此會過濾掉空值。通過使其成爲連接條件的一部分,左連接將返回左側的所有行以及與日期和狀態條件匹配的行。 – jpw