为什么这会失败?
GO
select vcCarrier1, vcTerminal1, vcZipEnd
FROM [GroundEDI].[dbo].[tblCustomerRouting]
HAVING
( (CASE WHEN vcCarrier1 = 'Carrier Code'
THEN vcTerminal1 = 'STM'
ELSE NULL
END)
-- ELSE vcTerminal1
AND
(CASE WHEN vcZipEnd = 'ZIP'
THEN vcTerminal1 = 'Terminal Code'
ELSE NULL
END))
Msg 102,Level 15,State 1,Line 5 '='附近的语法不正确。
答案 0 :(得分:1)
这些行不正确:THEN vcTerminal1 = 'STM'
和THEN vcTerminal1 = 'Terminal Code'
。
在Then
语句的case
子句中,只能有一个返回标量值的表达式,而不是比较而不是赋值。
我猜(因为你的尝试不太清楚)它应该是这样的:
SELECT vcCarrier1, vcTerminal1, vcZipEnd
FROM [GroundEDI].[dbo].[tblCustomerRouting]
WHERE vcTerminal1 =
CASE WHEN vcCarrier1 = 'Carrier Code' THEN
'STM'
WHEN vcZipEnd = 'ZIP' THEN
'Terminal Code'
ELSE
vcTerminal1
END
答案 1 :(得分:0)
你没有逻辑表达。顺便说一下,只对聚合值有意义。
也许这句话会产生你试图实现的结果?
select vcCarrier1, vcTerminal1, vcZipEnd
FROM [GroundEDI].[dbo].[tblCustomerRouting]
WHERE (vcCarrier1 = 'Carrier Code' AND vcTerminal1 = 'STM') OR
(vcZipEnd = 'ZIP' AND vcTerminal1 = 'Terminal Code')
祝你好运, 离子