我有两个表(data2002.dbo.tblCrew和eds.dbo.tblpms ),其中 tblCrew 用作主表。请注意,tblpms 中的主键都存在于 tblCrew (main) 中。我想看看 tblCrew 中的数据是否存在于 tblpms 中,如果确实存在,我需要从 tblCrew 中获取某个日期与另一个来自 tblpms 的日期之间的差异。但如果它不存在,我需要 tblCrew 的日期和今天的日期之间的差异。
我的查询被困在这里:
SELECT t1.CaseNo, t1.LastName + ', ' + t1.FirstName as fname
, case
when (t2.med_stat <> 'Fit To Work' and t2.med_stat <> 'Deceased'
and t2.med_stat <> 'Reached Maximum Medical Cure'
and t2.med_stat <> 'Stop Treatment')
then datediff(day,cast(t1.DatePIConsult as datetime), getdate())
else
datediff(day,cast(t1.DatePIConsult as datetime),cast(t2.med_stateff as datetime)) end as
TreatmentDays
from data2002.dbo.tblCrew as t1
join eds.dbo.tblpms as t2
on t1.CaseNo COLLATE DATABASE_DEFAULT = t2.CaseNo COLLATE DATABASE_DEFAULT
这给我带来了这个结果(这不是我所期望的):
CaseNo Name Days
AM06-009-CRW VILLARINO, RICHARD
BLB13-014-CRW ARQUISOLA, REDEN
JPI12-028-CRW OBENQUE, JOSE
JPI12-037-CRW TARRO, ANGELO
JPI12-039-CRW DELA CRUZ, FELICIANO 121
NOE12-205-CRW CLAVIO, RAYMUND
NOE12-205-CRW CLAVIO, RAYMUND
我希望更像这个(样本):
CaseNo Name Days
BM07-029-CRW ASASPOK, RICH 119
CLC14-014-CRW QDASF, READS 115
我想要(希望@_@)实现的目标如下):
一个。如果表 1 中存在 20 行,表 2 中存在 10 行。我可以在 20 行中得到结果吗(基于 table1)而不是来自 table2(因为 table1 总是比 table2 有更多的数据)。
湾。我还想在我的查询中添加仅显示不同的 CaseNo 并且如果第 3 列不为空。
C。另一个标准是仅当第 3 列中的值介于 109 和 121 之间时(实际值 = 110-120)。
希望你能帮我解决这个问题..提前非常感谢