2015-01-08 2 views
0

Я написал SQL-запрос, который вернет набор результатов, но возвращаемый результат будет недостаточно точным! Итак, теперь я пытаюсь обрезать результат, чтобы получить точную информацию, которая мне нужна! Каждый элемент, который я хочу, возвращается с несколькими строками, и я ищу конкретную строку, чтобы вернуться к пользователю.Можно использовать оператор CASE в WHERE CLAUSE в этом формате

Так что я хочу найти значение внутри предложения where, и выберем только нужные критерии из этого предмета! Я написал этот случай заявление в моем где положение, но я не могу заставить его функционировать эффективно:

and SourceType.Name = (CASE When SourceType.Name = '7550RTU' Then 
         Select Quantity.Name from Quantity 
         Where Quantity.Name = 'DI-S1 Cnt' 
        End) 
+1

Попробуйте и вы увидите, что это возможно. – HoneyBadger

+1

попробуйте сами! – Bharadwaj

+0

Это не сработает, вот почему я задаю вопрос, нужно выяснить, возможно ли это сейчас! – user3538102

ответ

1
and SourceType.Name = (CASE When SourceType.Name = '7550RTU' Then 
         (Select Quantity.Name from Quantity 
         Where Quantity.Name = 'DI-S1 Cnt') 
        End) 

Т.е. поместите запрос в круглые скобки. (Помните, что суб-запрос никогда не должен возвращать более одной строки здесь.)

Но если вы будете внимательнее смотреть, вы найдете некоторые логические проблемы.

Подвыбор (Select Quantity.Name from Quantity Where Quantity.Name = 'DI-S1 Cnt') либо вернет значение «DI-S1 Cnt», либо NULL (если такой строки нет).

Это означает, что CASE возвращает либо «DI-S1 Cnt» (если существует SourceType.Name = '7550RTU, так и строка подвыбора) или NULL (если и SourceType.Name <>' 7550RTU ' -select row существует.)

Если SourceType.Name является «7550RTU», а CASE возвращает «DI-S1 Cnt», сравнение FALSE. Если SourceType.Name - «7550RTU», а CASE возвращает NULL, сравнение неизвестно/NULL. Если SourceType.Name не является «7550RTU», сравнение FALSE (или NULL.)

Итак, главный вопрос: что вы пытаетесь здесь сделать?

+0

Есть ли способ, чтобы он мог вернуть более 1 строку? или существует ли другая процедура для этого? – user3538102

0

Если ваш вопрос, если что подзапрос будет возвращать более 1 строку вы можете выбрать верхнюю 1 запись из вашего списка выбора TOP1 данных вернулся из запроса

Смежные вопросы