SQL Server:从两个表中选择,默认值为0

问题描述 投票:0回答:3

表 - bassaccas(casmer,pacentent)

CaseNumber------PatientID
S100---------------P201
S101---------------P201
S102---------------P200
S103---------------P199
S104---------------P201

第二张桌子

Table - CHECKUP(CheckupNumber, CaseNumber)
CheckupNumber------CaseNumber
C301-------------------S100
C302-------------------S100
C303-------------------S101
C304-------------------S102
C305-------------------S103

SQL代码

SELECT CaseNumber FROM BASECASE
 & COUNT(CaseNumber)FROM CHECKUP, WHERE PatientID='P201'

如果CHECKUP中不存在案例编号,则COUNTY(案例编号)[将为空]应返回值0。

预期结果。

CaseNumber-----No.Of Checkups
S100------------------2
S101------------------1
S104------------------0

如何解决这个问题?

sql sql-server select default-value
3个回答
1
投票

你需要使用left joingroup by

select B.caseNumber, ISNULL(count(C.checkupNumber) ,0)
from BaseTable B
left join Checkup C
on B.caseNumber = C.caseNumber
where B.patientId ='P201'
group by B.caseNumber

1
投票

加入Group BY

select BC.Casenumber,isnull(COUNT(BC.Casenumber),0) CNT from BaseCase BC
left
join CheckUp Ch
on BC.CasetNumber=Ch.CaseNumber
group by BC.Casenumber

0
投票

您需要使用Left Join with Group by

SELECT cn.cno,Count(cp.cno)as NoCheCheup from casenumber cn LEFT JOIN checkup cp ON cn.cno = cp.cno WHERE cn.patientid ='P201'GROUP BY cn.cno

© www.soinside.com 2019 - 2024. All rights reserved.