【问题标题】:Select inside an if else or case sql expression在 if else 或 case sql 表达式中选择
【发布时间】:2014-04-02 11:13:52
【问题描述】:

我想在 if else 或 case 表达式中创建一个 select 表达式,但我无法让它工作。

我已经尝试了以下

select
(case when DateTime1 is null then select * from LogEntries where PC_TID > '2014-03-26'
else select * from LogEntries where DateTime1 > '2014-03-26' 
end) as timeSearchParam
from LogEntries

还有这个

if DateTime1 is null
begin
select * from LogEntries where PC_TID > '2014-03-26' 
end
else
begin
select * from LogEntries where DateTime1 > '2014-03-26' 
end

它们都不起作用,我就是不知道问题出在哪里。

【问题讨论】:

  • 您使用的是哪个 DBMS?
  • 错误信息是什么?

标签: sql select if-statement case


【解决方案1】:

其中一种方法是

select * from LogEntries where PC_TID > '2014-03-26'  and DateTime1 is null
union all
select * from LogEntries where DateTime1 > '2014-03-26'  and DateTime1 is not null
order by coalesce(DateTime1 , PC_TID)

select * from LogEntries 
where 
(PC_TID > '2014-03-26'  and DateTime1 is null)
or
(DateTime1 > '2014-03-26'  and DateTime1 is not null)
order by coalesce(DateTime1 , PC_TID)

【讨论】:

  • 我需要按 DateTime1 对数据进行排序,如果这是 null 我必须使用 PC_TID。你的建议会返回不是吗?
  • 我已经修改了代码。请参考它,看看它是否有效
  • 已经试过了,好像行得通,谢谢:-)
猜你喜欢
  • 2021-08-30
  • 1970-01-01
  • 1970-01-01
  • 2018-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-22
相关资源
最近更新 更多