组合两个SQL语句,设置一个状态

组合两个SQL语句,设置一个状态,sql,Sql,我目前有两条SQL语句,我想将它们合并成一条,并在它们满足时设置一个状态。我在下面发布了一些大规模精简的代码: select * from database where date1 < SYSDATE select * from database where date2 < SYSDATE 理想情况下,如果它符合第一条语句中的标准,它会设置一个“status1”标志,如果它不符合该标准,但符合第二条语句的标准,我会设置一个“status2”标志——希望这是有意义的 例如,数据类似于

我目前有两条SQL语句,我想将它们合并成一条,并在它们满足时设置一个状态。我在下面发布了一些大规模精简的代码:

select * from database where date1 < SYSDATE
select * from database where date2 < SYSDATE
理想情况下,如果它符合第一条语句中的标准,它会设置一个“status1”标志,如果它不符合该标准,但符合第二条语句的标准,我会设置一个“status2”标志——希望这是有意义的

例如,数据类似于:Name | ID | Status

谢谢:

试一试:

select Name, ID, CASE 
     WHEN date1 < SYSDATE THEN 1 
     WHEN date2 < SYSDATE THEN 2
END as Status
from mytable
where date1 < SYSDATE or date2 < SYSDATE
试一试:

select Name, ID, CASE 
     WHEN date1 < SYSDATE THEN 1 
     WHEN date2 < SYSDATE THEN 2
END as Status
from mytable
where date1 < SYSDATE or date2 < SYSDATE

既然你说你想更新状态

UPDATE database 
SET flag = CASE WHEN date1 < SYSDATE THEN 'status1' WHEN date2 < SYSDATE THEN 'status2' ELSE NULL END

既然你说你想更新状态

UPDATE database 
SET flag = CASE WHEN date1 < SYSDATE THEN 'status1' WHEN date2 < SYSDATE THEN 'status2' ELSE NULL END

您正在使用什么RDBMS?状态1或状态2在哪里?它们是表中的列还是表中的值?此数据库表是否与正在更新的表相关?您的预期结果实际上并不是100%清楚。sysdate表明它是Oracle或DB2,Oracle兼容性已打开。您使用的是什么RDBMS?状态1或状态2在哪里?它们是表中的列还是表中的值?此数据库表是否与正在更新的表相关?您的预期结果并不是100%清楚。sysdate表明它是Oracle或DB2,Oracle兼容性已转变为一大堆令人敬畏的回复,但我认为这是一个适合我的解决方案,工作非常完美,尽管我很欣赏其他解决方案也能做到这一点,并返回我所需要的结果。喜欢这个网站,谢谢!很多很棒的回复,但我认为这是一个适合我的回复,效果非常好,尽管我也很欣赏其他解决方案,并返回我所需要的。喜欢这个网站,谢谢!这是一个很好的解决方案,谢谢-我实际上正在编写一个新的视图,但是更新主数据库中的标志实际上可能是一个更好的解决方案!这是一个很好的解决方案,谢谢-我实际上正在编写一个新的视图,但是更新主数据库中的标志实际上可能是一个更好的解决方案!没有想到要用工会声明,噢!这是一个很好的解决方案,谢谢:没有想到使用工会声明,哦!这是一个很棒的解决方案,谢谢:就像我对本说的,这是一个很棒的解决方案-谢谢!!就像我对本说的,这是一个绝妙的解决方案-谢谢!!