Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Are IF statemens legal in a VIEW?

0 views
Skip to first unread message

Terry Olsen

unread,
Nov 2, 2009, 5:31:48 PM11/2/09
to
I'm trying to create a view where a number will changes based on a
couple of fields. First of all, are IF statements valid in a VIEW? I
keep getting syntax errors near the keyword IF. My attemped code
follows:

CREATE VIEW [dbo].[UPS_GLOBALSHIP_TEST] AS

SELECT
COMPANY,ShipToName,ADDRESS1,ADDRESS2,ADDRESS3,CITY,STATE,ZIPCODE,COUNTRY
,EMial,EMAIL_FLAG,PHNUMBR1,
SHIPMTHD,VALUESPECIFIED,SUBTOTAL,USERDEF2,SOPNUMBE,
IF ((USERDEF2<2) AND (SHIPMTHD LIKE '%GROUND%'))
BEGIN
IF ((ADDRESS1 LIKE '%P O BOX%') OR (ADDRESS1 LIKE '%PO BOX%') OR
(ADDRESS1 LIKE '%POBOX%') OR
(ADDRESS1 LIKE '%P.O. BOX%') OR (ADDRESS1 LIKE '%P.O.BOX%'))
BEGIN
CASE COMPANY WHEN 0 THEN '000000' WHEN 1 THEN '111111' WHEN 2 THEN
'222222' WHEN 3 THEN '333333' END
END
ELSE
BEGIN
CASE COMPANY WHEN 0 THEN '000000' WHEN 1 THEN '000000' WHEN 2 THEN
'111111' WHEN 3 THEN '333333' END
END
END
ELSE
BEGIN
CASE COMPANY WHEN 0 THEN '000000' WHEN 1 THEN '111111' WHEN 2 THEN
'222222' WHEN 3 THEN '333333' END
END
AS ShprNumbr
FROM UPS_GLOBALSHIP

*** Sent via Developersdex http://www.developersdex.com ***

Plamen Ratchev

unread,
Nov 3, 2009, 12:22:55 AM11/3/09
to
The IF statement is a control of flow statement and cannot be used in view definitions (or SQL expressions in general).
you have to use CASE expressions:

...
CASE WHEN ((USERDEF2<2) AND (SHIPMTHD LIKE '%GROUND%'))
THEN
CASE WHEN ((ADDRESS1 LIKE '%P O BOX%')


OR (ADDRESS1 LIKE '%PO BOX%')
OR (ADDRESS1 LIKE '%POBOX%')
OR (ADDRESS1 LIKE '%P.O. BOX%')
OR (ADDRESS1 LIKE '%P.O.BOX%'))

THEN


CASE COMPANY WHEN 0 THEN '000000'
WHEN 1 THEN '111111'
WHEN 2 THEN '222222'
WHEN 3 THEN '333333'
END

...

--
Plamen Ratchev
http://www.SQLStudio.com

0 new messages