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

Откуда:
Сообщений: 106
Добрый день.

Есть такой запрос, который выводит сумму данных из таблицы с временным интервалом:

Id Reader status Date
5A57BD24-29A7 CC348149-1CEC 10 2019-03-21 10:14:55.460
B44CF220-3768 CC348149-1CEC 2 2019-03-21 10:12:15.670
19745744-951E CC348149-1CEC 2 2019-03-21 10:10:50.120
12B82A9D-1B50 79A570FB-B1E1 8 2018-11-10 23:11:20.560


select
 coalesce(sum(RF.Status),0) as status,
 RFR.Asset as oid
from
database1 AS RFR
left join database2 AS RR ON RR.Asset = RFR.Asset
left join database3 AS RF ON RF.Reader = RR.Oid 
and RF.Date between dateadd(hour, 7, cast(cast(getdate() as date) as datetime)) and dateadd(hour, 19, cast(cast(getdate() as date) as datetime))
where RFR.Asset IS NOT NULL
group by RFR.Asset


Нужно добавить столбец date, в котором была бы последняя дата RF.Date, но которая бы не учитывала временной интервал between.

Структуру left join к сожалению не надо менять, потому что этот запрос часть другого запроса.

Исходя из верхней таблицы результат запроса должен быть таким:

status oid date
14 CC348149-1CEC2019-03-21 10:14:55.460
0 79A570FB-B1E1 2018-11-10 23:11:20.560
21 мар 19, 10:20    [21839214]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как добавить столбец с последней датой  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20527
Hopfen_Artur
Нужно добавить столбец date, в котором была бы последняя дата RF.Date
MAX(RF.Date).
Hopfen_Artur
которая бы не учитывала временной интервал between.
Записи из этого интервала отсеяны ещё при связывании.
21 мар 19, 10:27    [21839224]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как добавить столбец с последней датой  [new]
Hopfen_Artur
Member

Откуда:
Сообщений: 106
Нет, не отсеяны, MAX(RF.Date) не покажет даты вне интервала, вот полный запрос:

with tb as
(
   select sum(TC.ProductPlan) AS prplan, TC.OID, MAX(CASE WHEN TC.status = 1 THEN TC.ProductCycle END) AS cycle
   from database1  AS RFR
   left join database7  TC ON TC.OID = RFR.Asset
   WHERE RFR.Asset IS NOT NULL
   AND TC.Date = '2019-21-03 00:00:00.000'
   group by TC.OID
)

select
 coalesce(sum(case when tb.TPA_ior is null then RF.Status else 0 end),0) as status,
 RFR.Asset as oid, 
 RO.Наименование AS [name],
 TS.Наименование AS [state],
 TC.prplan AS [plan],
 TC.cycle
from
database1 AS RFR
left join database2  AS RR ON RR.Asset = RFR.Asset
left join database3  AS RF ON RF.Reader = RR.Oid 
and RF.Date between dateadd(hour, 7, cast(cast(getdate() as date) as datetime)) and dateadd(hour, 19, cast(cast(getdate() as date) as datetime))
left join database4  as tb on tb.TPA_ior = RFR.Asset and tb.View_problem = 'Плановый простой' and RF.Date between tb.Start_date and isnull(tb.End_date, null)
left join database5  RO ON RO.Oid = RFR.Asset
left join database6  TS ON TS.Oid = RO.ТехСостояние
left join tb AS TC ON TC.OID = RFR.Asset
where RFR.Asset IS NOT NULL
group by RFR.Asset, RO.Наименование, TS.Наименование, TC.prplan, TC.cycle
order by RO.Наименование ASC


Вот надо в этот запрос вклинить последнюю дату.
21 мар 19, 10:36    [21839240]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как добавить столбец с последней датой  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20527
Значит, переносите условие по дате из условия связывания в CASE подсчёта суммы. Или считайте MAX(RF.Date) во втором CTE, и добавляйте его в основной запрос.
21 мар 19, 10:39    [21839245]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как добавить столбец с последней датой  [new]
Hopfen_Artur
Member

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

спасибо, добавил к запросу так:
tb2 as
(
   select
   RFR.Asset as oid,
   coalesce(MAX(RF.Date),0) as [date]
   from
   database1 AS RFR
   left join database2  AS RR ON RR.Asset = RFR.Asset
   left join database3  AS RF ON RF.Reader = RR.Oid 
   where RFR.Asset IS NOT NULL
   group by RFR.Asset
)
21 мар 19, 10:47    [21839262]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить