Member 13518187 Ответов: 2

Нужно три столбца в случае запроса


Это мой запрос SQL server,
В случае использования трех столбцов у меня есть 3 условия 1.меньше 2.Между и 3. больше
Так как же я должен использовать их для трех столбцов как см. В разделе когда я ставлю три условия но после того как скобка есть тогда и еще так как использовать 3 столбца

Мне нужно 3 записи в колонке статуса, как это сделать ,с этим quer придут только две записи

select inum,supervisor,category,symn,belowthen2,between2and5,above5,dqty, (CASE 
 
     WHEN (belowthen2 < 2 and   between2and5 between 2 and 5 and above5 >5 ) THEN 'Above'  and ELSE 'Below' 

 END) as STATUS

from (

select inum,supervisor,category,symn,sum(belowthen2) as belowthen2,sum(between2and5) as between2and5,sum(above5) as above5,dqty from (
select inum,supervisor,category,symn,dqty,
CASE WHEN sum(dqty)  < 2 THEN dqty
ELSE 0 end as belowthen2 ,
CASE WHEN sum(dqty)  between 2 and 5 THEN dqty
ELSE 0 end as between2and5 ,
CASE WHEN sum(dqty)  > 5 THEN dqty
ELSE 0 end as above5 
 from (
 
 ...)


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

Понятия не имею, я использовал случай только с 2 условиями, но теперь мне нужно 3 условия в столбце состояния

Naga Sindhura

синтаксическая ошибка в операторе select. Так что попробуйте это:
Объявите таблицу @testdata (belowthen2 INT, between2and5 INT, above5 INT)
Вставить в @testdata(belowthen2, between2and5, above5)
ВЫБЕРИТЕ 1,3,6 СОЮЗА
ВЫБЕРИТЕ СОЕДИНЕНИЕ 3,3,6
Выберите 1,6,6

выберите belowthen2, between2and5, above5,CASE WHEN (belowthen2 < 2 and (between2and5 between 2 and 5) and above5 >5 ) THEN 'Above' ELSE 'Below' END as STATUS
От @ними

если проблема была исправлена это то все в порядке в противном случае вам нужно посмотреть на вашу часть от и где а также

Naga Sindhura

если вам нужна еще одна запись, как указано в решении 4. Пожалуйста, обратитесь к этому решению

2 Ответов

Рейтинг:
2

CHill60

В вашем коде есть ошибка.

WHEN (belowthen2 < 2 and   between2and5 between 2 and 5 and above5 >5 ) THEN 'Above'  and ELSE 'Below' 
Снимите крышку and это я уже выделил

Есть несколько хороших примеров того, как иметь несколько условий в CASE заявление на сайте документации - CASE (Transact-SQL) | Microsoft Docs[^]

Вот тривиальный пример использования этого образца данных:
create table #example (a int)
insert into #example (a) values (0),(25), (50), (100)
Этот запрос имеет 4 условия
select CASE WHEN a < 25 THEN '1st Quartile'
			WHEN a < 50 THEN '2nd Quartile'
			WHEN a < 75 THEN '3rd Quartile'
			ELSE '4th Quartile' 
			END,a 
FROM #example
дает результаты
1st Quartile	0
2nd Quartile	25
3rd Quartile	50
4th Quartile	100
Вот несколько более сложный пример
create table #example2 (a int, b int, c int, d int)
insert into #example2 (a,b,c,d) values
(1,0,0,0), (2,1,0,0), (1,1,0,0), (1,0,0,1)

select CASE WHEN a = 1 and d = 0 THEN 'Condition 1'
			WHEN a = 1 and b = 1 and c = 1 and d = 1 THEN 'Condition 2'
			ELSE
				'No conditions met'
			END
from #example2
К сожалению, вы не дали нам ни полного запроса, ни каких-либо выборочных данных или ожидаемых результатов, поэтому я не могу помочь вам с вашей конкретной проблемой


Рейтинг:
1

Member 13518187

----sp_help QWERTY

select inum,supervisor,category,symn,belowthen2,between2and5,above5,dqty,


(CASE  WHEN (belowthen2 < 2 and between2and5 =0 and above5 =0 )  THEN 'belowthen2' else 
     case  when (between2and5 between 2 and 5 and belowthen2 =0 and above5=0) Then 'between2and5' else
	  case when  ( between2and5 =0 and belowthen2 =0 and above5>5)  then   'above5'
	  end 
	   end 
	   end 
	   ) as STATUS
from (
----
)o ;


CHill60

Что это предназначается, чтобы быть? Решение проблемы?