Member 13518187 Ответов: 3

В SQL запрос с различным состоянием


У МЕНЯ ЕСТЬ 2 ПРЕДМЕТА ,НАЗВАНИЕ ПРЕДМЕТА "СТУЛ" И "КОРЗИНА", А ТАКЖЕ КОЛИЧЕСТВО...Мне нужна та, где количество &ГТ; стул 20 и элемент=''; и корзину товар='' , количество и GT;'09' должен прийти в выходной..

Я ПРОВАЛИЛСЯ ,НУЛИ ИДУТ..

Мне нужно, что для позиции стул DQTY должны показать и GT;20, а для товара корзина DQTY должно быть &ГТ; 9,,оно должно быть показано в мой выходной..я не хочу, чтобы другие DQTY номер в мой выходной

Использование SQL-server-2014

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

SELECT 
CASE WHEN op.dqty >  '20' AND ti.SubCategoryName ='CHAIR' THEN ti.SubCategoryName 
 WHEN op.dqty >  '9' AND ti.SubCategoryName ='BASKET' THEN ti.SubCategoryName  ELSE NULL END AS SubCategoryName  ,


TI.SubCategoryName,op.site,sasitename,symn,dqty,count(distinct(orna)) as orna
from ABCD

WHERE TI.SubCategoryName in ('CHAIR' ,'BASKET') 
GROUP BY TI.SubCategoryName,op.site,sasitename,symn,dqty;

3 Ответов

Рейтинг:
2

Debasis_Saha

Вы используете op.dqty и ti.SubCategoryName, что означает, что у вас есть две таблицы. Сначала проверьте состояние без случае, если УР нормальный запрос вернет все данные или нет. другие мудрые предоставляют полный запрос с предложением join, чтобы он четко понимал отношение таблицы.


Member 13518187

ВЫБИРАТЬ
Случай, когда op.dqty > '20' и ti.SubCategoryName ='стул' , то ti.SubCategoryName
Когда ОП.dqty &ГТ; '9' и TI.Корзина имя_подкатегории ='', то ти.Имя_подкатегории еще null конец как Имя_подкатегории ,


Ти.Имя_подкатегории,ОП.сайта,ОП.sasitename,ОП.symn,ОП.dqty,граф(отчетливый(Орна)) как Орна
от ABCD op
внутренний соединительный элемент ti

Где TI.SubCategoryName in ('стул' ,'корзина')
Группа по TI.SubCategoryName,op.site,op.sasitename,op.symn,op.dqty;

Рейтинг:
1

Debasis_Saha

В соответствии с запросом ur я записываю приведенный ниже сценарий. пожалуйста, проверьте это.

CREATE TABLE item
(
	Id					int,
	SubCategoryName		nvarchar(100)
)
go
insert into item values (1,'CHAIR')
go
insert into item values (2,'BASKET')
go
insert into item values (3,'TOOL')
go
CREATE TABLE ABCD
(
	ID			INT,
	CategoryId	Int,
	[site]		nvarchar(100),
	dqty		nvarchar(100),
	sasitename	nvarchar(100),
	symn		nvarchar(100),
	orna		int
)
GO
insert into abcd values (1,1,'00',25,'ss','22',1)
go
insert into abcd values (1,1,'00',15,'ss1','221',1)
go
insert into abcd values (1,2,'00',25,'ss2','222',2)
go
insert into abcd values (1,2,'00',18,'ss3','223',2)
go
insert into abcd values (1,1,'00',45,'ss4','224',1)
go
insert into abcd values (1,3,'00',25,'ss5','225',0)
go
insert into abcd values (1,3,'00',25,'ss6','226',0)
go
SELECT 
	CASE	WHEN op.dqty > 20 AND ti.SubCategoryName ='CHAIR' THEN ti.SubCategoryName 
			WHEN op.dqty > 9 AND ti.SubCategoryName ='BASKET' THEN ti.SubCategoryName 
	ELSE NULL END AS SubCategoryName , 
	TI.SubCategoryName,
	op.[site],
	op.sasitename,
	op.symn,
	op.dqty,
	count(distinct(orna)) as orna 
from ABCD op 
inner join item ti on op.CategoryId=ti.id
WHERE TI.SubCategoryName in ('CHAIR' ,'BASKET') 
GROUP BY TI.SubCategoryName,op.[site],op.sasitename,op.symn,op.dqty;



Надеемся, что это позволит решить проблемы УР. Пожалуйста, проголосуйте, если это вам поможет.


Member 13518187

ДАВАЯ РАЗНЫЕ РЕЗУЛЬТАТЫ

SubCategoryName SubCategoryName site sasitename symn dqty
NULL 560-Tea 10201362 AL SARIB CAFE. 1 ноября
Нуль-560-чай ресторан Шерман 10201653 декабря 0.0278
NULL 140-Dairy 10610489 GALAH FS октябрь 0.25
NULL 140-Dairy 10610497 FLWER CITY 1 декабря
NULL 140-молочные продукты 10610513 TAHA FS июль 0.5
NULL 140-молочные продукты 10610516 EJAZA GRO январь 0.25
NULL 140-Dairy 10610565 AL DOHA GRO 1 ноября
Нуль-140-молочные 10610592 Аль TAHIRE Ф/С 2 августа
Нуль-140-молочные 10610592 Аль TAHIRE Ф/С 2 сентября
140-молочный 140-молочные 10610602 Марван CAFTERIA 20 февраля
NULL 140-Dairy 10610602 MARWAN CAFTERIA 4 июня
NULL 140-Dairy 10610602 MARWAN CAFTERIA 8 мая
NULL 140-молочные продукты 10610638 SARAYA FOODSTUFF январь 0.25
Нуль-140-молочные 10610681 Шима кафе 2 января
NULL 140-молочные продукты 10610714 JARIAH FOODSTUFF 1 сентября

Рейтинг:
0

debasish mishra

Как вы можете сравнить количество с такой строкой, как " 20 " и "9"?
Просто удалите " и убедитесь, что ваш тип данных столбца является целочисленным. если тип данных не является целочисленным, то в sql преобразуйте данные столбца в целое число и убедитесь, что для данных, которые не находятся в целочисленном формате, o/p это равно 0.тогда очевидно, что 0>20 и 0>9 всегда будут ложными для нецелочисленных значений, и вы получите нули.Пожалуйста, проголосуйте, если это вам поможет.


Member 13518187

@debasish mishra ......это уже целое число, и я написал > 20 только ..по ошибке я написал здесь

Member 13518187

но выход не приходит правильно в соответствии с моим вопросом

[no name]

Вы не упомянули ни одной таблицы с псевдонимами TI и OP.Пожалуйста напишите sql запрос правильно иначе было бы трудно понять что происходит не так