powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подскажите как добавить столбец с последней датой
5 сообщений из 5, страница 1 из 1
Подскажите как добавить столбец с последней датой
    #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
Подскажите как добавить столбец с последней датой
    #39789400
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hopfen_ArturНужно добавить столбец date, в котором была бы последняя дата RF.DateMAX(RF.Date).
Hopfen_Arturкоторая бы не учитывала временной интервал between.Записи из этого интервала отсеяны ещё при связывании.
...
Рейтинг: 0 / 0
Подскажите как добавить столбец с последней датой
    #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
Подскажите как добавить столбец с последней датой
    #39789415
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит, переносите условие по дате из условия связывания в CASE подсчёта суммы. Или считайте MAX(RF.Date) во втором CTE, и добавляйте его в основной запрос.
...
Рейтинг: 0 / 0
Подскажите как добавить столбец с последней датой
    #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
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подскажите как добавить столбец с последней датой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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