【问题标题】:How do I add where condition?如何添加 where 条件?
【发布时间】:2020-12-25 10:35:05
【问题描述】:

我要根据返回的结果添加一个条件

【问题讨论】:

标签: sql db2 subquery where-clause


【解决方案1】:

您不能在作用域的FROM 子句中重用SELECT 子句中定义的别名。您需要重复表达式,或者使用子查询或 CTE。

select dayofweek_iso(timestamp(mycol)) as mynewcol 
from mytable
where dayofweek_iso(timestamp(mycol)) = 1

或者:

select *
from (
    select dayofweek_iso(timestamp(mycol)) as mynewcol 
    from mytable
) t
where mynewcol = 1

【讨论】:

    【解决方案2】:

    将现有查询用作子查询:

    select * from (
    <add your existing query in the screenshot here>
    ) t
    where <add your conditions here> 
    

    【讨论】:

      【解决方案3】:

      我认为您应该在帖子本身中包含您的代码。像这样的图片很不方便。

      W3: SQL WHERE

      正如您在此处看到的,只需在末尾添加您的 WHERE 语句:

      SELECT * FROM XXX WHERE CONDITION
      

      【讨论】:

        【解决方案4】:

        出于兴趣,从 Db2 11.5 开始,如果使用 NPS(即Netezza compatibility)模式,您可以在 WHERE 子句中引用列别名。

        CREATE TABLE MYTABLE(MYCOL DATE)
        
        SET SQL_COMPAT='NPS'
        
        SELECT DAYOFWEEK_ISO(TIMESTAMP(MYCOL)) AS MYNEWCOL 
        FROM MYTABLE
        WHERE MYNEWCOL = 1
        

        不过,这最好保留给从 Netezza 迁移的用户,因为 NPS 模式也会改变一些其他的东西。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-09-28
          • 2019-10-07
          • 2012-07-26
          • 2017-03-25
          • 1970-01-01
          • 2016-10-29
          • 2019-12-28
          • 1970-01-01
          相关资源
          最近更新 更多