Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Найти данные последней даты загрузки и последнего месяца ошибка в агргации  [new]
Romanov-krd
Member

Откуда:
Сообщений: 116
Всем привет!
Подскажите что изменить в запросе чтобы получить -

1) Данные за последний месяц - month_id
2) из этих данных последнее время загрузки - load_dtm

т.е.
изменить запрос
select max(t1.load_dtm), t1.approved_plan,t1.whs_id, t1.month_id
from
(
select max(sp.month_id) as month_id, sp.whs_id, sp.approved_plan,sp.load_dtm from dev_db_out.T_SALES_PLAN SP
where sp.whs_id=530 
group by sp.whs_id,  sp.approved_plan, sp.load_dtm) t1
group by t1.approved_plan,t1.whs_id, t1.month_id


чтобы из табл

К сообщению приложен файл. Размер - 23Kb
4 сен 17, 14:29    [20769897]     Ответить | Цитировать Сообщить модератору
 Re: Найти данные последней даты загрузки и последнего месяца ошибка в агргации  [new]
Romanov-krd
Member

Откуда:
Сообщений: 116
получить одну строку

К сообщению приложен файл. Размер - 3Kb
4 сен 17, 14:30    [20769902]     Ответить | Цитировать Сообщить модератору
 Re: Найти данные последней даты загрузки и последнего месяца ошибка в агргации  [new]
Romanov-krd
Member

Откуда:
Сообщений: 116
т.е. находит max месяц и для него max число загрузки
4 сен 17, 14:31    [20769906]     Ответить | Цитировать Сообщить модератору
 Re: Найти данные последней даты загрузки и последнего месяца ошибка в агргации  [new]
iap
Member

Откуда: Москва
Сообщений: 46951
SELECT TOP(1) WITH TIES * FROM dev_db_out.T_SALES_PLAN ORDER BY month_id DESC, load_dtm DESC;
4 сен 17, 14:33    [20769910]     Ответить | Цитировать Сообщить модератору
 Re: Найти данные последней даты загрузки и последнего месяца ошибка в агргации  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5112
Romanov-krd
1) Данные за последний месяц - month_id
что вы считаете "последним месяцем"?
4 сен 17, 14:34    [20769915]     Ответить | Цитировать Сообщить модератору
 Re: Найти данные последней даты загрузки и последнего месяца ошибка в агргации  [new]
iap
Member

Откуда: Москва
Сообщений: 46951
Поправил:
iap
SELECT TOP(1) WITH TIES * FROM dev_db_out.T_SALES_PLAN ORDER BY month_id DESC, load_dtm DESC;
SELECT TOP(1) WITH TIES * FROM dev_db_out.T_SALES_PLAN WHERE whs_id=530 ORDER BY month_id DESC, load_dtm DESC;
4 сен 17, 14:34    [20769917]     Ответить | Цитировать Сообщить модератору
 Re: Найти данные последней даты загрузки и последнего месяца ошибка в агргации  [new]
Romanov-krd
Member

Откуда:
Сообщений: 116
Дедушка,

в поле month_id, последний месяц т.е. для отдельного whs_id самое большое значение в поле month_id, month_id это id года и месяца напр 201712 =12 декабря 2017
4 сен 17, 14:58    [20770002]     Ответить | Цитировать Сообщить модератору
 Re: Найти данные последней даты загрузки и последнего месяца ошибка в агргации  [new]
Romanov-krd
Member

Откуда:
Сообщений: 116
iap,

ооо, спасибо. А как получить данные если whs_id много будет и для каждого много значений month_id и load_dtm много

сделал так
select sp3.load_dtm, sp3.whs_id,sp3.month_id, sp4.approved_plan from (

select max(sp2.load_dtm) as load_dtm, sp1.whs_id, sp1.month_id from (
select max(sp1.month_id) as month_id, sp1.whs_id
from dev_db_out.T_SALES_PLAN SP1
 
group by sp1.whs_id ) sp1 inner join dev_db_out.T_SALES_PLAN SP2 
on sp1.whs_id=sp2.whs_id and sp1.month_id=sp2.month_id
group by sp1.whs_id, sp1.month_id	) sp3 inner join dev_db_out.T_SALES_PLAN sp4
on sp3.whs_id=sp4.whs_id and sp3.month_id=sp4.month_id and sp3.load_dtm=sp4.load_dtm


но слишком громоздко и не уверен что правильно.

К сообщению приложен файл. Размер - 16Kb
4 сен 17, 15:03    [20770037]     Ответить | Цитировать Сообщить модератору
 Re: Найти данные последней даты загрузки и последнего месяца ошибка в агргации  [new]
iap
Member

Откуда: Москва
Сообщений: 46951
Romanov-krd
А как получить данные если whs_id много будет и для каждого много значений month_id и load_dtm много
SELECT *
FROM dev_db_out.T_SALES_PLAN
ORDER BY RANK()OVER(PARTITION BY whs_id ORDER BY month_id DESC, load_dtm DESC);
4 сен 17, 15:10    [20770068]     Ответить | Цитировать Сообщить модератору
 Re: Найти данные последней даты загрузки и последнего месяца ошибка в агргации  [new]
iap
Member

Откуда: Москва
Сообщений: 46951
iap
Romanov-krd
А как получить данные если whs_id много будет и для каждого много значений month_id и load_dtm много
SELECT *
FROM dev_db_out.T_SALES_PLAN
ORDER BY RANK()OVER(PARTITION BY whs_id ORDER BY month_id DESC, load_dtm DESC);
Что-то я совсем стал плох!
Опять поправляюсь:
SELECT TOP(1) WITH TIES *
FROM dev_db_out.T_SALES_PLAN
ORDER BY RANK()OVER(PARTITION BY whs_id ORDER BY month_id DESC, load_dtm DESC);
4 сен 17, 15:37    [20770168]     Ответить | Цитировать Сообщить модератору
 Re: Найти данные последней даты загрузки и последнего месяца ошибка в агргации  [new]
Romanov-krd
Member

Откуда:
Сообщений: 116
iap,

а в чем у меня тут ошибка? я немного усложнил запрос

select  whs.whs_id, sp.month_id,sp.load_dtm, sp.approved_plan, lnk.whs_condition_id,lnk.begin_dt,viruchka.opsum 
from PRD_VD_DM.V_WHS WHS
 left join
 dev_db_out.T_SALES_PLAN SP on whs.whs_id=sp.whs_id
 left join PRD_VD_ND.V_WHS_CONDITION_LNK lnk on whs.whs_id=lnk.whs_id
 left join PRD_VD_DM.V_SALES_WHS_AGG_02 VIRUCHKA on whs.whs_id=Viruchka.whs_id and sp.month_id=Viruchka.month_id
ORDER BY RANK()OVER(PARTITION BY sp.whs_id ORDER BY sp.month_id DESC, sp.load_dtm DESC,lnk.begin_dt desc, viruchka.opsum desc, lnk.whs_condition_id desc)


выводит задвоение записей как на картинке где whs_id = 42883 должен из этих трех один с max load_dtm

К сообщению приложен файл. Размер - 14Kb
4 сен 17, 16:50    [20770402]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить