【问题标题】:Filter by a calculated colum in SQL Oracle [duplicate]按 SQL Oracle 中的计算列过滤 [重复]
【发布时间】:2022-06-10 18:14:24
【问题描述】:

我正在尝试选择天数差异超过 50 的列。

但是我不能这样做。在我的查询下方找到:

SELECT name_,
       client_p as Client,
       to_date(first_date)-to_date(last_day) as difference
FROM   table1.mydata
where  difference>50

对此有何见解?

谢谢。

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    你不能那样引用它;要么使用这个

    SELECT name_,
           client_p AS client,
           TO_DATE (first_date) - TO_DATE (LAST_DAY) AS difference
      FROM table1.mydata
     WHERE TO_DATE (first_date) - TO_DATE (LAST_DAY) > 50;
    

    或 - 将您的查询作为 CTE(或子查询):

    WITH
       temp
       AS
          (SELECT name_,
                  client_p AS client,
                  TO_DATE (first_date) - TO_DATE (LAST_DAY) AS difference
             FROM table1.mydata)
    SELECT *
      FROM temp
     WHERE difference > 50;
    

    【讨论】:

      【解决方案2】:

      您不能立即使用别名进行过滤。进行子查询并使用别名从中选择或更改为:

      SELECT name_,
             client_p as Client,
             to_date(first_date)-to_date(last_day) as difference
      FROM   table1.mydata
      where  to_date(first_date)-to_date(last_day) > 50
      

      【讨论】:

        猜你喜欢
        • 2014-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-06
        相关资源
        最近更新 更多