Sql 带表条件的Where子句
我想写一个查询,它将根据卡车的状态过滤返回的行数。如果我只希望看到尚未关闭的卡车,我将从UI发送一个值Sql 带表条件的Where子句,sql,Sql,我想写一个查询,它将根据卡车的状态过滤返回的行数。如果我只希望看到尚未关闭的卡车,我将从UI发送一个值'1',发送一个'2'以查看所有卡车 select * from invoice left outer join truck on (invoice.invnum = truck.invnum) 这将返回正确的行数 问题: 我需要一个where子句,它将查看truck表的close\u date字段,并确定它是否为null。这里是一个问题,如果在卡车表中没有找到记录,仍然从发票表返回
'1'
,发送一个'2'
以查看所有卡车
select *
from invoice left outer
join truck
on (invoice.invnum = truck.invnum)
这将返回正确的行数
问题:
我需要一个where子句,它将查看truck表的close\u date
字段,并确定它是否为null。这里是一个问题,如果在卡车表中没有找到记录,仍然从发票表返回该行
select *
from invoice left outer
join truck
on (invoice.invnum = truck.invnum)
where UI.value = (select close_date from truck where invoice.invnum = truck.invnum) “if no record is returned here, return the value ‘2’
请澄清你的问题。你想做这样的事吗
select *
from
invoice
left outer join
truck on
invoice.invnum = truck.invnum
where
(UI.value = 1 AND truck.close_date IS NULL) OR
(UI.value = 2)
还是你想这么做
select *
from
invoice
left outer join
truck on
invoice.invnum = truck.invnum
where UI.Value =
(
SELECT CASE WHEN MAX(close_date) IS NULL THEN 2 ELSE 1 END
FROM truck
WHERE invoice.invnum = truck.invnum)
我想你有点误解了
where
条款。或者至少在这里它能为你做些什么。您是否可以将其放入一个封装在if
语句中的存储过程中?