Reputation: 27
Below is my SQL query which is returning back error message
The identifier that starts with 'CASE WHEN PX_PAXWEB.COUNTRY = 'AUT' THEN >vw_POSTCODE.POSTCODE WHEN PX_PAXWEB.COUNTRTY <> 'AUT' THEN vwPxPaxWe'
is too long. Maximum length is 128.Msg 103, Level 15, State 4, Procedure vwRBARpt_AJ, Line 168
The identifier that starts with 'CASE WHEN AG_AGENTS.SALES_AREA_DESC = 'Int. – Inbound >Then vwPxPaxweb.SALES_AREA' is too long. Maximum length is 128."
Here's the SQL query:
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
Upvotes: 1
Views: 6596
Reputation: 77926
Try doing it like below. Use ()
to separate the CASE
. []
is used for identifires; like if you are using reserve word as column names or if your column names have spaces in it then to delimit them.
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
Upvotes: 1
Reputation: 13296
It took me formatting your code to realize it, but you need parentheses and not square brackets surrounding your cases. As you have it, it's trying to find a column/table/whatever that's named "[...your code...]", which is certainly too long.
Upvotes: 1