2016-02-09 4 views
0

Я пытаюсь создать такой запрос:несколько записей в случае

select * 
from ... 
stageid IN (CASE WHEN o.someotherId= (@predefinedId) 
          THEN (N'here is guid actually',N'another guid') 
          ELSE (N'and here is a guid',N'+ guid') 
         END) 

он не компилируется, но если оставить только 1 Guid в случае он будет компилироваться, но не решить мою задачу.

Что можно сделать, чтобы вернуть несколько записей за каждый случай?

+2

Ничего не понятно из вашего вопроса. Отформатируйте запрошенный запрос и добавьте фиктивные данные с ожидаемым набором результатов. И укажите, какую СУБД вы используете. –

+0

Отправьте полный запрос и добавьте деталь сообщения об ошибке на ваш вопрос. –

+1

Конечно, он не будет компилироваться. Какого черта вы пытаетесь сделать? – sagi

ответ

1

Я думаю, что вы хотите сделать так:

where (o.someotherId = (@predefinedId) and stageid IN (...)) 
    or (o.someotherId != (@predefinedId) and stageid IN (...)) 
0

Использование OR вместо CASE:

... (
    (o.someotherId = (@predefinedId) AND stageid IN (N'here is guid actually',N'another guid')) OR 
    (o.someotherId <> (@predefinedId) AND stageid IN (N'and here is a guid',N'+ guid')) 
) 
Смежные вопросы