【发布时间】:2017-08-21 20:43:44
【问题描述】:
我正在尝试合并两个表。我试图找到的是一个人是否有一个积极的计划。这是该人可以注册和终止的东西。
从表一,Persons,我是这些列:
PerID FacID
993 Fac1
1052 Fac1
1163 Fac2
从表二,PlanDates,我是这些列:
PerID FacID StartDt EndDt
993 Fac1 2017-07-01 00:00:00.000 2017-07-31 00:00:00.000
993 Fac1 2017-08-05 00:00:00.000 NULL
1053 Fac1 NULL NULL
1163 Fac2 2017-08-01 00:00:00.000 NULL
我正在运行这个查询
Select
A.PerID
,A.FacID
,B.PerID
,iif(CASE WHEN B.StartDt IS NULL THEN 'FALSE' ELSE 'TRUE' END = 'True', iif(CASE WHEN B.EndDt IS NULL THEN 'FALSE' ELSE 'TRUE' END = 'False', 'Plan A', 'None'),'None') AS [Plan Code]
,B.FacID
From
Persons A
Left Join PlanDates B
On A.PerID = B.PerID
And A.FacID = B.FacID
我得到的结果是:
PerID Plan Code
993 None
993 Plan A
1052 None
1163 Plan A
我希望没有 PerID 993 的第一个结果。
我在查询中使用 iif 语句的原因是将日期设为布尔值。
我包含了 FacID,因为当一个人访问靠近另一个位置时,一些 PerID 位于多个位置。
我正在 SQL Server 上运行查询。
【问题讨论】:
标签: sql-server datefilter