【问题标题】:Combining two tables and filtering only last date组合两个表并仅过滤最后一个日期
【发布时间】: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


    【解决方案1】:

    看看这是否给出了您正在寻找的结果......

    SELECT 
        p.PerID,
        p.FacID,
        PlanCode = CASE 
                        WHEN EXISTS (               
                                    SELECT 
                                        1
                                    FROM 
                                        dbo.PlanDates pd
                                    WHERE 
                                        p.PerID = pd.PerID
                                        AND p.FacID = pd.FacID
                                        AND pd.StartDT IS NOT NULL 
                                        AND pd.EndDt IS NULL )
                        THEN 'Plan A'
                        ELSE 'None'
                    END
    FROM
        dbo.Person p;
    

    【讨论】:

    • 这看起来正是我所需要的。谢谢。
    • 感谢您的反馈。很高兴我能帮上忙。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 2011-09-23
    • 1970-01-01
    • 2020-05-17
    • 2014-12-11
    • 2020-08-04
    相关资源
    最近更新 更多