我正在尝试声明一个值以使我的查询运行得更快。
我想存储 @driver_collected
,所以我可以在下面查询 - 我希望我做对了。
这样我就可以为我们的客户提供更好的在线状态,区分“准备交货”和“待交货”之间的区别
declare @driver_collected int;
set @driver_collected = (select max(x.recieved) from entry_extra x inner join entry e2 on e2.entry_id = x.entry_id where e2.link_entry_id = e.entry_id),
select e.entry_id,e.taxpoint_date,
case
when e.delivery_method_id <> 3 @driver_collected is null
then 'Ready for Dispatch'
when e.delivery_method_id <> 3 @driver_collected is not null
then 'Out For Delivery'
else 'Test'
end
from entry e where e.entry_type in ('SORD','SRTN') and e.trader_id = 1203046
我希望我的结果是:
entry_id,taxpoint_date, Ready for Dispatch / Out For Delivery'
我的经验不足,不知道哪里出错了,非常感谢任何建议。
提前致谢!
答案 0 :(得分:0)
我稍微重构了查询以消除您的语法错误,在您的第一个查询中,您引用了您没有的别名 e
,假设这应该是 x
declare @driver_collected int;
select @driver_collected=max(x.recieved)
from entry_extra x
inner join entry e2 on e2.entry_id = x.entry_id
and e2.link_entry_id = x.entry_id
select e.entry_id,e.taxpoint_date,
case
when e.delivery_method_id <> 3 and @driver_collected is null
then 'Ready for Dispatch'
when e.delivery_method_id <> 3 and @driver_collected is not null
then 'Out For Delivery'
else 'Test'
end as DeliveryStatus
from entry e
where e.entry_type in ('SORD','SRTN') and e.trader_id = 1203046