提问人:Lilcodemuffin 提问时间:11/17/2023 最后编辑:marc_sLilcodemuffin 更新时间:11/17/2023 访问量:45
从单个表中进行选择时,如何在 WHERE 子句中选择多列?
How do I select multiple columns in my WHERE clause when selecting from a single table?
问:
我觉得我在这里错过了一些非常简单的东西,我想这样做:
SELECT *
FROM DATABASE.SCHEMA.TABLE
WHERE COL1 > DATEADD(day, -2, CONVERT(date, SYSDATETIME()));
它适用于 1 列,但我想从多个列中进行选择,如下所示:
SELECT *
FROM DATABASE.SCHEMA.TABLE
WHERE COL1,COL2,COL3,COL4 > DATEADD(day, -2, CONVERT(date, SYSDATETIME()));
我尝试使用 COLUMN IN,但它的语法不正确,我也尝试将它们包含在 () 中,但它也不起作用。WHERE
答:
0赞
Stu
11/17/2023
#1
以下怎么样
select *
from database.schema.table
cross apply(select DateAdd(day, -2, Convert(Date, SysDateTime())))d(dt)
where col1 > dt or col2 > dt or col3 > dt or col4 > dt;
在 SQL Server 2022 中,还可以执行以下操作
where greatest(col1, col2, col3, col4) > DateAdd(day, -2, Convert(Date, SysDateTime())))
评论
0赞
Lilcodemuffin
11/17/2023
哦,好的,我认为您找到了正确的语法,但是现在我收到一个错误,说“COL2不存在”,所以我想我必须应用您编写的内容,但包括一个IF COLUMN EXISTS语句
0赞
Stu
11/17/2023
我也很想看到一个声明,如果你的表架构是那么不稳定,你不知道你有什么列,你就会遇到更大的问题。if column exists
0赞
T N
11/17/2023
不错的答案,但对于测试,我认为您需要而不是.Any >
greatest()
least()
1赞
Stu
11/17/2023
@TN Doh,是的,当你一次做太多事情时,就会发生这种情况,谢谢。
评论
apply
and/or
SELECT * FROM DATABASE.SCEHMA.TABLE WHERE PRCS_DTE > DATEADD(day, -2, CONVERT(date, SYSDATETIME())) OR WHERE EFF_DTE > DATEADD(day, -2, CONVERT(date, SYSDATETIME()))