Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подскажите как добавить столбец с последней датой / 5 сообщений из 5, страница 1 из 1
21.03.2019, 10:20
    #39789394
Hopfen_Artur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как добавить столбец с последней датой
Добрый день.

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

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

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
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.4600 79A570FB-B1E1 2018-11-10 23:11:20.560
...
Рейтинг: 0 / 0
21.03.2019, 10:27
    #39789400
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как добавить столбец с последней датой
Hopfen_ArturНужно добавить столбец date, в котором была бы последняя дата RF.DateMAX(RF.Date).
Hopfen_Arturкоторая бы не учитывала временной интервал between.Записи из этого интервала отсеяны ещё при связывании.
...
Рейтинг: 0 / 0
21.03.2019, 10:36
    #39789411
Hopfen_Artur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как добавить столбец с последней датой
Нет, не отсеяны, MAX(RF.Date) не покажет даты вне интервала, вот полный запрос:

Код: 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.
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



Вот надо в этот запрос вклинить последнюю дату.
...
Рейтинг: 0 / 0
21.03.2019, 10:39
    #39789415
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как добавить столбец с последней датой
Значит, переносите условие по дате из условия связывания в CASE подсчёта суммы. Или считайте MAX(RF.Date) во втором CTE, и добавляйте его в основной запрос.
...
Рейтинг: 0 / 0
21.03.2019, 10:47
    #39789424
Hopfen_Artur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как добавить столбец с последней датой
Akina,

спасибо, добавил к запросу так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
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
)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подскажите как добавить столбец с последней датой / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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