powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Минимальная дата для строки с разными значениями
4 сообщений из 4, страница 1 из 1
Минимальная дата для строки с разными значениями
    #40119553
Raze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго всем утра, хотя утро понедельника редко бывает добрым))
Товарищи, прошу помощи, пролез много различных сайтов на тему даты и группировки, но так и не понял, как решить свою проблему. Помогите, пожалуйста.

Необходимо получить минимальную дату для позиции за определенный период (например за 01.11.2021 - 13.12.2021) - это есть, добавляем несколько подзапросов после "обертки", тоже все ок, строки не "расползаются", но как только я после "обертки" добавляю последний подзапрос, строки просто разбегаются кто во что горазд по своим датам, т.е. после добавления подзапроса результат выглядит следующим образом:

Код: plaintext
1.
2.
3.
4.
5.
6.
   
  Наименование       Дата       Кол-во 

      Лист 001       2021-11-29      1
      Лист 001       2021-12-01      2
      Лист 001       2021-12-03      2
      Лист 001       2021-12-05      1

ожидаемый результат:

Код: plaintext
1.
2.
  Наименование       Дата       Кол-во 

     Лист 001       2021-11-29     6

Если переходить к самому запросу:

Запрос
Код: 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.
select r.* 
		,(select max(ksm.n_res) 
		  from nrmd 
		  inner join ksm 
			 on nrmd.kmat=ksm.kmat  
		  where nrmd.tipnrm='901' and nrmd.kmatgp=ttmz.kmatgp 
			and nrmd.ntechpr=ttmz.ntechpr
		  ) mat  

		 ,(select max(nrmd.tnrm) 
		 from nrmd 
		 where nrmd.tipnrm='901' and nrmd.kmatgp=ttmz.kmatgp 
			and nrmd.ntechpr=ttmz.ntechpr
		 ) norm_rash

		,isnull((select sum(kol)
			from kumk 
			inner join kum 
				on kumk.unkum = kum.unkum and kum.god = substring((select TOP 1 GMO.GODMEC_OTC from GMO where gmo.KOBJ='00001'), 1 ,4) 
			where ksm.kmat = kumk.kmat and ksm.kskl = kumk.ceh and kumk.ceh = '11103'
		),0) kol_kum

	 ,isnull((select sum(planzp_r.kol) 
	   from planzp_r 
	   inner join planzp 
			on planzp_r.kzap = r.kzap and planzp_r.kplt = r.kplt and planzp_r.kplv = r.kplv and planzp.status in( 'P', 'B')
				and planzp.kplt = r.kplt and planzp.kplv = r.kplv and planzp.unplanzp = planzp_r.unplanzp
	   ),0) nzp

from(
select  pp.kmat, ksm.n_res, pp.ntechpr, pp.KZAP, pp.KPLT, pp.KPLV, MIN( pp.date_in) date_in, SUM( pp.PL_M) pl_m 
from pla pp
inner join ksm 
	on pp.kmat = ksm.kmat 
where pp.kplt = '502' and pp.kplv = '1' and pp.PR_IZG_F = ''  and pp.date_in between @dateP and @dateK and pp.kttop = 'Л101' 
group by pp.kmat, ksm.n_res, pp.ntechpr, pp.KZAP, pp.KPLT, pp.kplv
 ) r
 inner join ttmz 
	on r.kmat = ttmz.kmatgp and r.ntechpr = ttmz.ntechpr 
 inner join ksm 
	on TTMZ.KMATGP = KSM.KMAT 
order by r.date_in




Есть таблица плана - pla, из этой таблицы выбираем нужные нам поля, связываемся с другими таблицами и также получаем нужные поля. Вся беда начинается как только добавляется вот этот подзапрос

Код: sql
1.
2.
3.
4.
5.
6.
,isnull((select sum(planzp_r.kol) 
 from planzp_r 
 inner join planzp 
	on planzp_r.kzap = r.kzap and planzp_r.kplt = r.kplt and planzp_r.kplv = r.kplv and planzp.status in( 'P', 'B')
		and planzp.kplt = r.kplt and planzp.kplv = r.kplv and planzp.unplanzp = planzp_r.unplanzp
	 ),0) nzp



sql просит группировку по полям kzap - уник.номер строки плана; kplt - тип плана; kplv - вариант плана
добавляем группировку и получаем первую приведенную таблицу, а не ожидаемый результат.
Подскажите пожалуйста, в чем ошибка
...
Рейтинг: 0 / 0
Минимальная дата для строки с разными значениями
    #40119636
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Raze,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
declare @t table (f1 varchar(100), f2 date, f3 int);

insert @t (f1,f2,f3) values 
('Лист 001','2021-11-29',1),
('Лист 001','2021-12-01',2),
('Лист 001','2021-12-03',2),
('Лист 001','2021-12-05',1)

select f1, min(f2) f2, sum(f3) f3 
from @t
group by f1



f1 f2 f3
---------- ---------- -----------
Лист 001 2021-11-29 6
...
Рейтинг: 0 / 0
Минимальная дата для строки с разными значениями
    #40119644
Raze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов, спасибо, попробую таким образом сделать
...
Рейтинг: 0 / 0
Минимальная дата для строки с разными значениями
    #40119818
Raze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В конечном итоге вернулся к своему варианту (слегка переделанным), добавил еще группировку и все стало ок, ожидаемый результат получен. Владислав, спасибо, что попытались помочь)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Минимальная дата для строки с разными значениями
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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