62,046
社区成员
发帖
与我相关
我的任务
分享
select o.confirmation_no,o.car_no,v.fname,v.vip_card_no,case o.pickup_point when 0 then o.pickup_address else cs.abbr_name end as pickup_address,
case o.dropoff_point when 0 then o.dropoff_address else cs1.abbr_name end as dropoff_address,from_date,to_date,d.fname as pickup_dr_name,d1.fname as dropoff_dr_name,o.status
from operator_self o(nolock)
left outer join vip v(nolock) on o.vip_no=v.vip_no
left outer join car_storehouse cs(nolock) on o.pickup_point=cs.id
left outer join car_storehouse cs1(nolock) on o.dropoff_point=cs1.id
left outer join driver d(nolock) on o.pickup_dr_id=d.dr_id
left outer join driver d1(nolock) on o.dropoff_dr_id=d1.dr_id where 1=1
and (case o.pickup_point when 0 then o.pickup_city in (select city from user_store_right where [user_id]=1)
or case o.dropoff_point when 0 then o.dropoff_city in (select city from user_store_right where [user_id]=1))
sdfasdfasdfasdf
where (o.pickup_point=0 and o.pickup_city in(....) or ( o.dropoff_point =0 and o.dropoff_city in(....) )
当然,用union all也可以.
不能这样,
你可以用存储过程
如
if xxx=1
select ... from table where 条件A
else
select .... from table Where 条件B
或者用拼接SQL的办法
declare @sql nvarchar(200)
set @sql=N'select * from tab where '
if xxx=1
set @sql=@sql+'条件A'
else
set @sql=@sql+'条件B'
EXECUTE sp_executesql @Sql