powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Условие для данных
6 сообщений из 6, страница 1 из 1
Условие для данных
    #39965622
Necro666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Может кто подсказать, как правильно дописать условие?
код - 05цех - 2300склад - Р-1-12склад - М-1-3; код - 010цех - 2300склад - Р2-2
Теперь сам код:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
select rr.mesto
	from(
		select case when r.ceh = ttmr.ceh
				then 
					(select top 1 nssm_s 
						from nrmd 
						inner join prcr 
							on nrmd.kmat=prcr.kmatob and ttmr.CEH = prcr.CEH and prcr.PR_DO <> 'О'
						inner join prcrstor 
							on prcr.RCENTR=prcrstor.RCENTR 
						inner join ssm 
							on prcrstor.kssm = ssm.kssm and ssm.CEH=prcr.CEH and ssm.PR_DO <> 'О'
						WHERE r.nop = nrmd.nop and getdate() between nrmd.DATEFROM and nrmd.DATETO 
								and ttmz.ntechpr = nrmd.ntechpr and NRMD.KMATGP = TTMZ.KMATGP and nrmd.TIPNRM = '952'
						 )
					else 
						(select top 1 ssm.nssm_s
						from ssm
						inner join ssmk
							on ssm.kssm = ssmk.kssm and ssm.ceh = ssmk.ceh
								and ssmk.kmat = ttmz.kmatgp 
						where ssm.pr_do <>'О' and ssm.nssm_s like 'М%')
				end mesto
		from(
			select top 1 r.ceh, r.NOP
			from ttmr r
			where r.UNTTMZ=ttmr.UNTTMZ and getdate() between r.DATEFROM and r.DATETO 
				and r.nop > ttmr.nop
			order by r.nop
			) r
		)rr



Суть такова: если обратить внимание на "Цеха", то можно заметить, что они одинаковые (номер цеха берется и сравнивается из одной и той же таблицы), по первому условию получаем, если следующий цех равен текущему, тогда присваиваем ему место хранения (склад), иначе проверяем справочник, если детали нет, тогда ничего не ставим, если есть ставим склад "М". Т.е. тут все ок, но вот далее как раз и следует проблема, которую никак не решить, получается не то что нужно..скажем так.
Необходимо еще одно условие: Если текущий цех не равен следующему, тогда снова выполняем эти два условия из case
. Соответственно ставила что-то вроде
Код: plsql
1.
select case when r.ceh = ttmr.ceh or r.ceh != ttmr.ceh 

и тоже ничего, при таком условии не заполняются данные и для первого условия
Код: plsql
1.
r.ceh = ttmr.ceh

не выполняется тогда else
Помогите, пожалуйста разобраться
...
Рейтинг: 0 / 0
Условие для данных
    #39965631
Necro666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В таком виде тоже пробовала

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
	select rr.mesto
	from(
		select case when r.ceh = ttmr.ceh 
				then 
					(select top 1 nssm_s 
						from nrmd 
						inner join prcr 
							on nrmd.kmat=prcr.kmatob and ttmr.CEH = prcr.CEH and prcr.PR_DO <> 'О'
						inner join prcrstor 
							on prcr.RCENTR=prcrstor.RCENTR 
						inner join ssm 
							on prcrstor.kssm = ssm.kssm and ssm.CEH=prcr.CEH and ssm.PR_DO <> 'О'
						WHERE r.nop = nrmd.nop and getdate() between nrmd.DATEFROM and nrmd.DATETO 
								and ttmz.ntechpr = nrmd.ntechpr and NRMD.KMATGP = TTMZ.KMATGP and nrmd.TIPNRM = '952'
						 )
					when r.ceh != ttmr.ceh 
				then 
					(select top 1 nssm_s 
						from nrmd 
						inner join prcr 
							on nrmd.kmat=prcr.kmatob and ttmr.CEH = prcr.CEH and prcr.PR_DO <> 'О'
						inner join prcrstor 
							on prcr.RCENTR=prcrstor.RCENTR 
						inner join ssm 
							on prcrstor.kssm = ssm.kssm and ssm.CEH=prcr.CEH and ssm.PR_DO <> 'О'
						WHERE r.nop = nrmd.nop and getdate() between nrmd.DATEFROM and nrmd.DATETO 
								and ttmz.ntechpr = nrmd.ntechpr and NRMD.KMATGP = TTMZ.KMATGP and nrmd.TIPNRM = '952'
						 )
					else 
						(select top 1 ssm.nssm_s
						from ssm
						inner join ssmk
							on ssm.kssm = ssmk.kssm and ssm.ceh = ssmk.ceh
								and ssmk.kmat = ttmz.kmatgp 
						where ssm.pr_do <>'О' and ssm.nssm_s like 'М%')
				end mesto
		from(
			select top 1 r.ceh, r.NOP
			from ttmr r
			where r.UNTTMZ=ttmr.UNTTMZ and getdate() between r.DATEFROM and r.DATETO 
				and r.nop > ttmr.nop
			order by r.nop
			) r
		)rr
...
Рейтинг: 0 / 0
Условие для данных
    #39965643
Necro666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще все фигня :D
Посетила мысль по поводу выполнения...скажет кто, на счет вложенного case? то есть
Код: plsql
1.
select case when exists(select case when …… then.....) else.....


Это вообще адекватно будет или нет?
...
Рейтинг: 0 / 0
Условие для данных
    #39965653
Necro666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Necro666
Вообще все фигня :D
Посетила мысль по поводу выполнения...скажет кто, на счет вложенного case? то есть
Код: plsql
1.
select case when exists(select case when …… then.....) else.....


Это вообще адекватно будет или нет?



-----------

не какой-то бред выходит тоже
...
Рейтинг: 0 / 0
Условие для данных
    #39965677
Necro666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
еще вопрос, "под таким углом"...
Что можно использовать чтобы выполнялись then и else
...
Рейтинг: 0 / 0
Условие для данных
    #39965717
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: Извините, вынужден прервать этот нескончаемый поток сознания.
Как уже неоднократно вам писалось -- 22132722
Данный топик - не исключение, поэтому закрыто.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Условие для данных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]