powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как правильно применить LEAD ?
7 сообщений из 7, страница 1 из 1
Как правильно применить LEAD ?
    #40133324
Morskoi_kotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста!

Есть таблица с множеством столбцов по изготовлению продукции


№ плана изготовления, дата плана изготовления, артикул продукции, цвет, цех, готовность, начальник цеха, тип продукции, и тд,

Мне нужно получить какая была следующая дата производства товара согласно артикулу. Например, товар с артикулом 345 был произведен 01.10.2021, а следующий план изготовления был 01.12.2021. В выводе должно быть: Товар - 345, Дата изготовления 1 - 01.10.2021, Дата изготовления 2 - 01.12.2021.

Но так как там еще много других параметров и строчка с одним и тем же артикулом может повторятся 5 раз (а в другом поле, например , будет 5 раз различный уникальный цвет), то я получаю: Товар - 345, Дата изготовления 1 - 01.10.2021, Дата изготовления 2 - 01.10.2021, Товар - 345, Дата изготовления 1 - 01.10.2021, Дата изготовления 2 - 01.10.2021, Товар - 345, Дата изготовления 1 - 01.10.2021, Дата изготовления 2 - 01.10.2021.... и т.д. Т.е. дата повторяется из следующей строки.

Как мне правильно применить функцию LEAD здесь? или можно как-то другим способом?
...
Рейтинг: 0 / 0
Как правильно применить LEAD ?
    #40133325
3unknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lead(Дата изготовления) over(partition by артикул order by Дата изготовления)
...
Рейтинг: 0 / 0
Как правильно применить LEAD ?
    #40133329
Morskoi_kotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
3unknown,

Не получается. Все равно сдвигает именно в рамках строки а не в рамках артикула((
...
Рейтинг: 0 / 0
Как правильно применить LEAD ?
    #40133333
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Morskoi_kotik
Подскажите, пожалуйста!

Есть таблица с множеством столбцов по изготовлению продукции


№ плана изготовления, дата плана изготовления, артикул продукции, цвет, цех, готовность, начальник цеха, тип продукции, и тд,

Мне нужно получить какая была следующая дата производства товара согласно артикулу. Например, товар с артикулом 345 был произведен 01.10.2021, а следующий план изготовления был 01.12.2021. В выводе должно быть: Товар - 345, Дата изготовления 1 - 01.10.2021, Дата изготовления 2 - 01.12.2021.

Но так как там еще много других параметров и строчка с одним и тем же артикулом может повторятся 5 раз (а в другом поле, например , будет 5 раз различный уникальный цвет), то я получаю: Товар - 345, Дата изготовления 1 - 01.10.2021, Дата изготовления 2 - 01.10.2021, Товар - 345, Дата изготовления 1 - 01.10.2021, Дата изготовления 2 - 01.10.2021, Товар - 345, Дата изготовления 1 - 01.10.2021, Дата изготовления 2 - 01.10.2021.... и т.д. Т.е. дата повторяется из следующей строки.

Как мне правильно применить функцию LEAD здесь? или можно как-то другим способом?


Очень странно, но зачем здесь LEAD вообще? Может быть выборка из таблицы в подзапрос с GROUP (или distinct),- с последующим сцеплением с собой же ?
...
Рейтинг: 0 / 0
Как правильно применить LEAD ?
    #40133334
3unknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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.
DROP TABLE IF EXISTS #data;
CREATE TABLE #data (
  Artikul int,
  [Manuf_date]  datetime,
  [colour] varchar(30),
  price float
)
;

insert #data
values(345,'20210501','Black',5.87),
(345,'20210501','White',5.87),
(345,'20210501','Blue',5.87),
(345,'20210501','Yellow',5.87),
(345,'20210503','Black',5.87),
(345,'20210503','White',5.87),
(345,'20210505','White',5.87),
(345,'20210505','Yellow',5.87)

;with a as(
select distinct Artikul,Manuf_date
from #data
),b as(
select*
,lead(Manuf_date) over(partition by Artikul order by Manuf_date) next_date
from a
)
select d.*,next_date
from #data d join b on d.Artikul = b.Artikul
and d.Manuf_date = b.Manuf_date
...
Рейтинг: 0 / 0
Как правильно применить LEAD ?
    #40133335
Morskoi_kotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SIMPLicity_,

А можно пример? Че то не соображу
...
Рейтинг: 0 / 0
Как правильно применить LEAD ?
    #40133341
Morskoi_kotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
3unknown,

Спасибо, огромное! Применил данную конструкцию на своих данных - работает! (только у себя в конце на left join поменял).

(Все, теперь, наконец, могу идти спать. :)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как правильно применить LEAD ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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