下面是我的SQL查询,它返回错误消息
标有以' CASE WHEN PX_PAXWEB.COUNTRY =' AUT'那么> vw_POSTCODE.POSTCODE 什么时候PX_PAXWEB.COUNTRTY<> ' AUT'那么vwPxPaxWe'
太长。最大长度为128。Msg 103,Level 15,State 4,Procedure vwRBARpt_AJ,Line 168
以' CASE WHEN AG_AGENTS.SALES_AREA_DESC =' Int开头的标识符。 - 入境>然后vwPxPaxweb.SALES_AREA'太长。最大长度为128。"
这是SQL查询:
CASE
WHEN AG_AGENTS.SALES_AREA_DESC = 'Dom. - NAT'
THEN [CASE
WHEN PX_PAXWEB.COUNTRY = 'AUT' THEN vw_POSTCODE.POSTCODE
WHEN PX_PAXWEB.COUNTRTY <> 'AUT' THEN vwPxPaxWeb.SALES_AREA
ELSE COALESCE (vw_POSTCODE.POSTCODE, vwPxPaxWeb.SALES_AREA, AG_AGENTS.SALES_AREA_DESC) ]
ELSE
[CASE WHEN AG_AGENTS.SALES_AREA_DESC = Int. – Inbound
THEN vwPxPaxweb.SALES_AREA
ELSE COALESCE(vwPxPaxweb.SALES_AREA, AG_AGENTS.SALES_AREA_DESC)]
END AS SALES_AREA_DESC_2
答案 0 :(得分:1)
我花了你的代码来实现它,但你需要括号而不是方括号围绕你的情况。正如你所拥有的,它试图找到一个列/表/任何名为“[...你的代码...]”的东西,这肯定太长了。
答案 1 :(得分:1)
尝试如下所示。使用()
分隔CASE
。 []
用于识别;就像你使用保留字作为列名或者你的列名在其中有空格然后分隔它们一样。
CASE WHEN AG_AGENTS.SALES_AREA_DESC = 'Dom. - NAT' THEN
(CASE WHEN PX_PAXWEB.COUNTRY = 'AUT' THEN vw_POSTCODE.POSTCODE
WHEN PX_PAXWEB.COUNTRTY <> 'AUT' THEN vwPxPaxWeb.SALES_AREA
ELSE COALESCE (vw_POSTCODE.POSTCODE,vwPxPaxWeb.SALES_AREA,AG_AGENTS.SALES_AREA_DESC)
)
ELSE
(CASE WHEN AG_AGENTS.SALES_AREA_DESC = 'Int. – Inbound' Then vwPxPaxweb.SALES_AREA
ELSE COALESCE( vwPxPaxweb.SALES_AREA,AG_AGENTS.SALES_AREA_DESC)
)
END AS SALES_AREA_DESC_2