SQL错误 - 以..........开头的标识符太长。最大长度为128

时间:2014-07-17 01:23:17

标签: sql sql-server

下面是我的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

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