【发布时间】:2019-06-24 10:23:00
【问题描述】:
我正在尝试根据订单是在多个细分市场中,还是基于驾驶员类型在单个细分市场中计算驾驶员的薪酬百分比。我成功地测试了每个部分,但是 From 有一个红色下划线,并且在执行它时出现语法错误。这是我正在尝试的脚本:
update legheader
set lgh_extrainfo1 = (
Select Case When L.lgh_split_flag <> 'N' and L.lgh_carrier = 'UNKNOWN'
Then Case
When
TR.trc_type1 = 'O/O' and TR.trc_type3 = '70Per'
Then CAST (.7 * ((Cast (L.lgh_miles as decimal (10,2))/O.ord_totalmiles) * L.lgh_ord_charge)as decimal (10,2))
When
TR.trc_type1 = 'O/O' and TR.trc_type3 <> '70Per'
Then CAST (.64 * ((Cast (L.lgh_miles as decimal (10,2))/O.ord_totalmiles) * L.lgh_ord_charge)as decimal (10,2))
When L.lgh_split_flag = 'N' and L.lgh_carrier = 'UNKNOWN'
Then Case
When
TR.trc_type1 = 'O/O' and TR.trc_type3 = '70Per'
Then CAST (.7 * L.lgh_ord_charge as decimal (10,2))
When
TR.trc_type1 = 'O/O' and TR.trc_type3 <> '70Per'
Then CAST (.64 * L.lgh_ord_charge as decimal (10,2))
End
From Legheader L Left Join TractorProfile TR on L.lgh_tractor = TR.trc_number
Left Join Orderheader O on O.ord_hdrnumber = L.ord_hdrnumber)
【问题讨论】:
-
我看到三个
CASE,但只有一个END。 -
我以为你可以有多个When和Then,只需要一个End。
-
您可以在一个
CASE中拥有多个WHEN/THEN,但您在外部的CASE中还嵌套了 2 个CASE。它们需要自己关闭,然后才能使用END关闭外部。 -
这会妨碍最终进行单一计算吗?还是会产生多个结果,例如 NULL?
-
我将 End 添加到每个嵌套案例中,这消除了 From 下的红色下划线,但是当我执行时,我现在得到 Invalid Object Name 'Legheader' 任何想法为什么,它没有任何地方有红色标记吗?
标签: sql sql-server-2016 ssms-2016