Developer29 Ответов: 3

Как использовать case в SQL-запросе


У меня есть тест таблицы с именем varchar(20),id int & gender char(1) столбцов.Я хочу написать условие, используя пол.

Если gender=0, то показать все гендерные детали
пол=1, затем мужчина
пол=2, затем женский

Этот запрос не показывает никаких подробностей..может ли кто-нибудь дать предложение.

Спасибо.

Что я уже пробовал:

select name,gender from test where case when @Gender=0 then 1 else a.Gender end =case when @Gender=0 then 1 else @Gender end

3 Ответов

Рейтинг:
2

Sahan2u

Это очень просто. Попробуйте выполнить следующий запрос. (Я действительно не понимаю, что вы хотите отобразить, когда пол = 0. Поэтому в моем запросе я показываю пустоту, когда пол равен 0)

select name,
	case when gender = '0' then ''
		when gender = '1' then 'male'
		when gender = '2' then 'female' end as gender
from test


CHill60

Когда gender = 0, OP хочет включить как мужские, так и женские записи, если gender = 1, то они хотят отображать только мужские записи, а если gender = 2-только женские записи. Ваше решение этого не делает - оно только преобразует число в varchar.

Рейтинг:
1

Vinay_kr0164

объявить @Gender int

выберите имя, пол, случай, когда @Gender = 0
затем (выберите * из теста
где пол в ("мужской", "женский") )
когда @Gender = 1, то (выберите * из теста
где пол = 'мужчина')
когда @Gender = 2, то (выберите * из теста
где Пол = 'Женский')
конец
от испытаний


CHill60

Это синтаксически неверно - он даже не будет работать без ошибок
Msg 116, Уровень 16, Состояние 1, Строка 6
Только одно выражение может быть указано в списке выбора, если подзапрос не введен с помощью EXISTS.
Msg 116, Уровень 16, Состояние 1, Строка 8
Только одно выражение может быть указано в списке выбора, если подзапрос не введен с помощью EXISTS.
Msg 116, Уровень 16, Состояние 1, Строка 10
Только одно выражение может быть указано в списке выбора, если подзапрос не введен с помощью EXISTS.

Рейтинг:
0

OriginalGriff

Не используйте CASE через некоторое время, используйте AND и OR вместо этого. Предположив, что A. Gender также равен 1 для мужчины и 2 для женщины, попробуйте:

... WHERE @Gender = 0 OR @GENDER = a.Gender