【发布时间】:2020-12-25 10:35:05
【问题描述】:
【问题讨论】:
-
WHERE 呢?
标签: sql db2 subquery where-clause
【问题讨论】:
标签: sql db2 subquery where-clause
您不能在作用域的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
【讨论】:
将现有查询用作子查询:
select * from (
<add your existing query in the screenshot here>
) t
where <add your conditions here>
【讨论】:
我认为您应该在帖子本身中包含您的代码。像这样的图片很不方便。
正如您在此处看到的,只需在末尾添加您的 WHERE 语句:
SELECT * FROM XXX WHERE CONDITION
【讨论】:
出于兴趣,从 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 模式也会改变一些其他的东西。
【讨论】: