Ответ 1
Вы можете упростить это с помощью COALESCE.
SELECT TOP 10 id, COALESCE(x.boy, x.girl, x.dog, x.cat) as Who
FROM house x
Как включить вложенный оператор if в предложении select запроса sql? Я знаю, что использовать случай, когда условие, тогда X else y end, но как вы делаете вложенное одно для каждой записи в наборе записей.
if x.boy is not null then
x.boy
else if x.girl is not null
then x.girl
else if x.dog is not null
then x.dog
else
x.cat
вот моя попытка:
SELECT top 10
id,
case when x.boy <> NULL then
x.boy
else case when x.girl <> NULL
x.girl
else case when x.dog <> NULL
x.dog
else x.cat
end as Who
from house x
Правильно ли это?
Вы можете упростить это с помощью COALESCE.
SELECT TOP 10 id, COALESCE(x.boy, x.girl, x.dog, x.cat) as Who
FROM house x
Да. Нет ничего плохого в случае в случае.
Хотя, вот ваш script, написанный по-разному:
SELECT top 10
id,
case
when x.boy IS NOT NULL then x.boy
else case
when x.girl IS NOT NULL THEN x.girl
else case
when x.dog IS NOT NULL THEN x.dog
else x.cat
end
end
end as Who
from house x
ИЛИ
SELECT top 10
id,
case
when x.boy IS NOT NULL then x.boy
when x.girl IS NOT NULL THEN x.girl
when x.dog IS NOT NULL THEN x.dog
else x.cat
end as Who
from house x
ИЛИ
SELECT top 10
id,
coalesce(x.boy, x.girl, x.dog, x.cat) AS Who
from house x
Попробуйте следующее:
SELECT top 10
id,
case when x.boy Is Not NULL then x.boy
else
case when x.girl Is Not NULL then x.girl
else
case when x.dog Is Not Null Then x.dog
else x.cat End
End
end as Who
from house x
хотя вы могли бы просто использовать coalesce
, как предложил Джо.