2014-02-18 2 views
0

Мой запрос выглядит следующим образом:Sql ошибка сервера - неправильный синтаксис около если условие

declare @test varchar(500) 
SELECT @test=coalesce(@test+',','') + cast(RoleName as varchar) FROM                
     ( select roles.RoleName from LU_BCOMS_usersroles usrroles 
      inner join LU_BCOMS_roles roles 
      on roles.roleid  = usrroles.Roles_roleid 
      where Users_Userid='MV10310' 
     ) as Tbl 

select repfamily.ProductName as Category,repfamily.Family as SeqChange,repfamily.RepFamily as DescOfChange, req.*, 
TaskCompVer = 
CASE WHEN req.UpdateByASPM is not null THEN 'Provide PLQM Wish List' 
     WHEN req.UpdateByASPM is null THEN 'Provide ASPM Wish List' 
     WHEN req.CreatedBy is not null THEN 'Provide ASPM Wish List' 
     END 
    from performa.TX_BCOMS_Request as req 
inner join TX_BCOMS_Requestrepfamily family on 
family.request_requestid=req.requestid 
inner join LU_BCOMS_RepFamily as repfamily on 
family.RepFamily_repFamilyid=repfamily.repfamilyid 

where req.UpdatedByPLQM is null 
(
    if (CHARINDEX('ASPM',@test)> 0) 
     Begin 
     and req.UpdatedByASPM is null 
     end 
    else if (CHARINDEX('PLQM' ,@test)> 0) 
     begin 
     and req.UpdatedByASPM IS NOT null 
     END 
) 

Я не в состоянии построить запрос на слог неправильный синтаксис около If может любой помочь мне от этого ..

если бы я встретил это условие, если (CHARINDEX («ASPM», @ тест)> 0), мне нужно добавить в «и req.UpdatedByASPM равна нулю», иначе следующий ...

ответ

1

Я думаю, вы ожидаете этого ,,,

declare @test varchar(500) 
SELECT @test=coalesce(@test+',','') + cast(RoleName as varchar) FROM                
     ( select roles.RoleName from LU_BCOMS_usersroles usrroles 
      inner join LU_BCOMS_roles roles 
      on roles.roleid  = usrroles.Roles_roleid 
      where Users_Userid='MV10310' 
     ) as Tbl 

select repfamily.ProductName as Category,repfamily.Family as SeqChange,repfamily.RepFamily as DescOfChange, req.*, 
TaskCompVer = 
CASE WHEN req.UpdateByASPM is not null THEN 'Provide PLQM Wish List' 
     WHEN req.UpdateByASPM is null THEN 'Provide ASPM Wish List' 
     WHEN req.CreatedBy is not null THEN 'Provide ASPM Wish List' 
     END 
    from performa.TX_BCOMS_Request as req 
inner join TX_BCOMS_Requestrepfamily family on 
family.request_requestid=req.requestid 
inner join LU_BCOMS_RepFamily as repfamily on 
family.RepFamily_repFamilyid=repfamily.repfamilyid 

where req.UpdatedByPLQM is null and (

    ((CHARINDEX('ASPM',@test)> 0) and req.UpdatedByASPM is null) 
    or 
    ((CHARINDEX('PLQM' ,@test)> 0) and req.UpdatedByASPM IS NOT null) 
    ) 
+0

Может у добавить SQlFiddle пожалуйста. – sureshhh

0

Попробуйте это где положение области

WHERE req.UpdatedByPLQM Is Null 
     And 
     (CASE 
      WHEN CHARINDEX('ASPM',@test)> 0 and req.UpdatedByASPM Is Null THEN 1 
      WHEN (CHARINDEX('PLQM' ,@test)> 0) and req.UpdatedByASPM Is Not Null THEN 1 
      ELSE 0 
     END) = 1 
Смежные вопросы