代码之家  ›  专栏  ›  技术社区  ›  Angelfish42

加倍时解决案例

  •  0
  • Angelfish42  · 技术社区  · 7 年前

    我一直在到处寻找答案,但似乎找不到答案。如果这是重复的,我真的很抱歉,但我真的需要一些帮助

    我有一个非常简单的case-when语句,它按预期工作

    CASE WHEN  Table.Expirydate < @Today AND CON.Column IS NULL
         THEN count(ContactID) OVER (PARTITION BY column,type ) END
    

    但是,它产生两条线

    结果是

    NAME    COUNTID CLAUSE
    A       10      5
    A       10      NULL
    B       1       1
    B       1       NULL
    

    理想情况下,我希望删除带有null的行-

    NAME  COUNTID  CLAUSE
    A     10          5 
    B     1           1
    

    我试过一个建议 CASE WHEN MAX(CASE WHEN END) 但这是错误的。我用了一个凝聚器,这不起作用。我可能错过了一些非常明显的东西!

    为了澄清这一点,不容易将其放在where子句中,因为我的存储过程中有许多这样的语句。

    select语句的基本部分如下-

    作为我的select语句

    Table1.Id AS NAME
    
    ,Count(ConID) OVER (PARTITION BY Table1.Id2) AS COUNTID
    
    ,Case When Statement AS CLAUSE
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Gordon Linoff    7 年前

    添加一个 WHERE 包含以下内容的条款:

    WHERE Table.Expirydate < @Today AND CON.Column IS NULL
    

    但是,这样做会更改用于窗口功能的数据。

    相反,请使用子查询:

    select t.*
    from (<your query here>) t
    where <expr> is not null;