powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Убрать позиции, где признак выполнения больше 1-го
7 сообщений из 7, страница 1 из 1
Убрать позиции, где признак выполнения больше 1-го
    #40062540
Raze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вечер добрый всем. Подскажите пожалуйста, как убрать позиции где признак выполнения больше 1-го?
т.е. есть позиции, где признак выполнения 0, а есть где 1, нужны только те, где 0

Код: sql
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.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
    declare @d datetime =getdate()
    declare @dn datetime = DATEADD(MONTH,-1,getdate()) 
    declare @drash datetime = DATEADD(MONTH,3,@dn) 

select rr.*
from(
    select p.*, p.kol-p.KOL_pos as ost, ksm.N_RES_DOC, pod.NAIM_P
		,KSM.PR_DO , TAPEI.NEDI
		, ISNULL( KSM.NZAPK,0) NZAPK
		, (select MIN (TNRM) 
			from( select n.TNRM as TNRM  
					from NRMD n
					where n.TIPNRM ='601' and n.KMATGP=p.KMAT and GETDATE() between n.DATEFROM and n.DATETO 
					union 
					select k.NZAPK  as TNRM  
					from KSM k 
					where k.KMAT=p.KMAT 
						and not exists (select n.TNRM as TNRM 
									    from NRMD n 
									    where n.TIPNRM ='601' and n.KMATGP=p.KMAT and GETDATE() between n.DATEFROM 
									            and n.DATETO) )rez
			) zapas					
				
    from(
	    select r.kmat, r.gruppa ,SUM(r.KOL) kol, SUM(r.KOL_pos) KOL_pos
                                    
	    from (
		    select  isnull((select SUM(DMZO.KOL_CR) as KOL_CR 
						    from PLAE 
						    inner join DMZ 
							    on PLAE.UNDOC=DMZ.UNDOC 
						    inner join DMZO 
							    on DMZO.UNDOC_CR=DMZ.UNDOC and DMZO.NPP_CR =PLAE.NPP 
						    inner join DMZ as dmz1 
							    on dmz1.UNDOC=DMZO.UNDOC_DB and DMZ1.KDMT='1   ' 
						    where DMZ.KDMT='_ЗЗП'  and PLAE.KZAP =p.kzap 	and dmz1.PR_RZN='+' 
						    group by PLAE.KZAP, PLAE.KMAT, PLAE.KOL 
						        ),0) KOL_pos 
				    , isnull((select top 1 PLAE.KOL
						    from PLAE 
						    where  PLAE.KZAP =p.kzap  	
						    group by PLAE.KZAP, PLAE.KMAT, PLAE.KOL 
						        ),P.PL_M) KOL				 			                
			,p.kmat
					,(select top 1 sp2.NAIM from sp2 
						inner join ksm 
							on SP2.KOD_C = ksm.ksbg
								and p.KMAT=ksm.kmat 
						where sp2.spr = 'sbg'
							and sp2.NAIM is not null) as gruppa
                                                            ,(select rrr.RR
									from(
									SELECT TOP 1 CASE when exists
						                        (select 1 
						                            from PLAE 
						                            inner join DMZ 
							                        on PLAE.UNDOC=DMZ.UNDOC 
						                            where DMZ.KDMT='_ЗЗП' and PLAE.KZAP=p.kzap and not DMZ.DOSTATUS='И') 
					                        then 1 
					                        else  ISNULL(
								                            (SELECT TOP 1 CASE  WHEN 85*KOL/100<=KOL_CR THEN 1 ELSE 0 	END  AS R 
									                        FROM( 
										                        select top 1000 PLAE.KZAP, PLAE.KMAT, PLAE.KOL, SUM(DMZO.KOL_CR) as KOL_CR 
										                        from PLAE 
										                        inner join DMZ 
											                        on PLAE.UNDOC=DMZ.UNDOC 
										                        inner join DMZO 
											                        on DMZO.UNDOC_CR=DMZ.UNDOC and DMZO.NPP_CR =PLAE.NPP 
										                        inner join DMZ as dmz1 
											                        on dmz1.UNDOC=DMZO.UNDOC_DB and DMZ1.KDMT='1   '  
										                        where DMZ.KDMT='_ЗЗП'  and PLAE.KZAP =p.kzap and dmz1.PR_RZN='+' 
										                        group by PLAE.KZAP, PLAE.KMAT, PLAE.KOL
										                        ) AS REZ	
								                            ), 0 
								                        ) end AS RR
														)rrr
														where rr < 1
                        ) as pr_v
											

		    from PLA p
		    inner join KSM
				on p.KMAT=ksm.KMAT
		    where p.KPLT='611' 
		            and  DATEADD(DAY, ksm.NZAPD , P.DATE_ISP) ------------------------------------------------*******
		                    between @dn and @d
							--and p.pr_utv = ''
			    and not exists(select PLAE.KZAP, PLAE.KMAT, PLAE.KOL, SUM(DMZO.KOL_CR) as KOL_CR 
						    from PLAE 
						    inner join DMZ 
							    on PLAE.UNDOC=DMZ.UNDOC 
						    inner join DMZO 
							    on DMZO.UNDOC_CR=DMZ.UNDOC and DMZO.NPP_CR =PLAE.NPP 
						    inner join DMZ as dmz1 
							    on dmz1.UNDOC=DMZO.UNDOC_DB  and DMZ1.KDMT='1   ' 
						    where DMZ.KDMT='_ЗЗП'  and PLAE.KZAP =p.kzap 	and dmz1.PR_RZN='+' 
						    group by PLAE.KZAP, PLAE.KMAT, PLAE.KOL 
						    having  PLAE.KOL <= SUM(DMZO.KOL_CR) 
							)
		    ) r
		where gruppa not like '%Савельев КАНБАН%' and gruppa not like '%КАНБАН Кольцова%' 
			and gruppa not like '%Чечева%' and gruppa not like '%Вспомогательные материалы Савельев%'
            and gruppa not like '%Вспомогательные материалы Козырева%' and gruppa not like '%Вспомогательные материалы Кузьмин%' 
            and gruppa not like '%Вспомогательные материалы Кольцова%'   and gruppa not like '%Вспомогательные материалы Демин%' 
            and gruppa not like '%Вспомогательные материалы Смольский%'   and gruppa not like '%Вспомогательные материалы Медведева%'
            and gruppa not like '%Вспомогательные материалы Чечева%'   and gruppa not like '%Оснастка Смольский%'
            and gruppa not like '%Оснастка Демин%'   and gruppa not like '%Оснастка Кольцова%'
            and gruppa not like '%Оснастка Резерв%'   and gruppa not like '%Крепеж по ГОСТ%'
            and gruppa not like '%Сварочные материалы%'   and gruppa not like '%Технические газы%'
            and gruppa not like '%Группа С Козырева%'   and gruppa not like '%Группа С Кольцова%'
	    group by r.KMAT,  r.gruppa
        )p
    inner join ksm 
	    on p.KMAT=ksm.KMAT 
	            and ksm.KSKL in (11103, 11102, 11101)
	        -- and ksm.KSKL in ( 11102)	                             
    inner join pod

	    on ksm.KSKL=pod.CEH
    inner join TAPEI 
		on KSM.EDI=TAPEI.EDI
	--where p.kol-p.KOL_pos - ISNULL( KSM.NZAPK,0)>0
	)rr
					
	where rr.ost - ISNULL( rr.zapas,0)>0



Это полный запрос

где устанавливается признак выполнения- вот эта часть

Код: sql
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.
     ,(select rrr.RR
									from(
									SELECT TOP 1 CASE when exists
						                        (select 1 
						                            from PLAE 
						                            inner join DMZ 
							                        on PLAE.UNDOC=DMZ.UNDOC 
						                            where DMZ.KDMT='_ЗЗП' and PLAE.KZAP=p.kzap and not DMZ.DOSTATUS='И') 
					                        then 1 
					                        else  ISNULL(
								                            (SELECT TOP 1 CASE  WHEN 85*KOL/100<=KOL_CR THEN 1 ELSE 0 	END  AS R 
									                        FROM( 
										                        select top 1000 PLAE.KZAP, PLAE.KMAT, PLAE.KOL, SUM(DMZO.KOL_CR) as KOL_CR 
										                        from PLAE 
										                        inner join DMZ 
											                        on PLAE.UNDOC=DMZ.UNDOC 
										                        inner join DMZO 
											                        on DMZO.UNDOC_CR=DMZ.UNDOC and DMZO.NPP_CR =PLAE.NPP 
										                        inner join DMZ as dmz1 
											                        on dmz1.UNDOC=DMZO.UNDOC_DB and DMZ1.KDMT='1   '  
										                        where DMZ.KDMT='_ЗЗП'  and PLAE.KZAP =p.kzap and dmz1.PR_RZN='+' 
										                        group by PLAE.KZAP, PLAE.KMAT, PLAE.KOL
										                        ) AS REZ	
								                            ), 0 
								                        ) end AS RR
														)rrr
														where rr < 1
                        ) as pr_v



Помогите пожалуйста..


Модератор: В следующий раз сотру портянку, которая без тега spoiler
...
Рейтинг: 0 / 0
Убрать позиции, где признак выполнения больше 1-го
    #40062595
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Raze
Помогите пожалуйста..
Вы бы отформатировали запрос-то, читать невозможно.
Raze
Вечер добрый всем. Подскажите пожалуйста, как убрать позиции где признак выполнения больше 1-го?
т.е. есть позиции, где признак выполнения 0, а есть где 1, нужны только те, где 0
Противоречие - в первой фразе вы хотите, что бы признак <= 1, во второй = 0

ЗЫ Условия ставить просто - нужно написать where [поле признак выполнения] = 0
...
Рейтинг: 0 / 0
Убрать позиции, где признак выполнения больше 1-го
    #40062661
Raze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg, я понял, спасибо, попробую
...
Рейтинг: 0 / 0
Убрать позиции, где признак выполнения больше 1-го
    #40062664
Raze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"Модератор: В следующий раз сотру портянку, которая без тега spoiler"
Модератор извините) в спешке писал сообщение и как бы вот..
...
Рейтинг: 0 / 0
Убрать позиции, где признак выполнения больше 1-го
    #40062669
Raze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg, нет, тоже самое что и у меня до этого получается. Строки, где признак выполнения 1 так и остались
...
Рейтинг: 0 / 0
Убрать позиции, где признак выполнения больше 1-го
    #40062677
Raze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg,

почему противоречие, не очень понимаю? признак выполнения не должен быть <=1, признак выполнения должен быть меньше, только меньше 1 и никак не равен ей... либо тогда, да, просто =0, т.е. отбор только тех позиций, где признак не равен 1
до этого у меня было написано условие вот так: признак < 1
...
Рейтинг: 0 / 0
Убрать позиции, где признак выполнения больше 1-го
    #40062741
Raze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg, Да, все же получилось, спасибо за помощь!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Убрать позиции, где признак выполнения больше 1-го
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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