дублирование строк для другого периода - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть запрос, как показано ниже:

select cast(DATEADD(day,-1,DATEADD(hour,1, INTERVAL_PERIOD_TIMESTAMP)) as date) as 'TradeDate'
   , 'P' as 'Currency' 
   , cast(DATEADD(hour,1, INTERVAL_PERIOD_TIMESTAMP) as date) as 'DeliveryDate'
   , cast(INTERVAL_PERIOD_TIMESTAMP as time) as 'DeliveryTime'
   , cast(CLEARED_DAM_PRICE as decimal(16,2)) as 'SMP'
   , 0 as 'TimeChange'
   , GETDATE() as 'DateAdded'
   from DAM_RESULT

Это возвращает список результатов следующим образом:

2018-08-11  P   2018-08-12  23:00:00.0000000    37.12   0   2018-09-26 10:52:27.157
2018-08-11  P   2018-08-12  00:00:00.0000000    37.12   0   2018-09-26 10:52:27.157
2018-08-11  P   2018-08-12  01:00:00.0000000    37.12   0   2018-09-26 10:52:27.157
2018-08-11  P   2018-08-12  02:00:00.0000000    35.86   0   2018-09-26 10:52:27.157
2018-08-11  P   2018-08-12  03:00:00.0000000    35.79   0   2018-09-26 10:52:27.157
2018-08-11  P   2018-08-12  04:00:00.0000000    37.12   0   2018-09-26 10:52:27.157

В настоящее время я получаю гранулярность в течение одного часа, нопредыдущая модель данных, с которой я пытаюсь интегрироваться, основана на получасовой детализации.Приведенные ниже значения показывают, что 23:00 часов - это 37,12, как я могу изменить свой запрос, чтобы добавить еще одну строку для 23:30 часов по той же цене?

Есть ли лучший вариант, чем сделать это, добавив 30 минут ко времени и объединяя две таблицы, которые выводятся?

1 Ответ

0 голосов
/ 26 сентября 2018

Я бы добавил в дополнительные минуты, чтобы добавить.Если я правильно понимаю:

select cast(DATEADD(day, -1, DATEADD(hour, 1, dr.INTERVAL_PERIOD_TIMESTAMP)) as date) as TradeDate,
       'P' as Currency,
       cast(DATEADD(minute, 60 + v.additional_minutes, dr.INTERVAL_PERIOD_TIMESTAMP) as date) as DeliveryDate,
       cast(dr.INTERVAL_PERIOD_TIMESTAMP as time) as DeliveryTime,
       cast(dr.CLEARED_DAM_PRICE as decimal(16, 2)) as SMP,
       0 as TimeChange,
       GETDATE() as DateAdded
from DAM_RESULT dr CROSS JOIN
     (VALUES (0), (30)) as v(additional_minutes);

Обратите внимание, что я добавил псевдоним таблицы и уточнил все ссылки на столбцы.Также я удалил одинарные кавычки из имен столбцов.Используйте только одинарные кавычки для констант строки и даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...