@marselabdullin

Как перевести запрос t-sql под oracle субд?

У меня есть задача:
Необходимо настроить автоматическое преобразование еженедельных значений в ежемесячные. Продажи в переходных неделях (часть недели в одном месяце, часть в другом) необходимо распределить по календарным дням.
В данном примере продажи за неделю, окончившуюся 05.03.2020, необходимо распределить следующим образом 2 дня на февраль, 5 дней на март.

Таблица с данными
Дата 	Сумма 
27.02.2020 	312,00 
05.03.2020 	833,00 
12.03.2020 	225,00 
19.03.2020 	453,00 
26.03.2020 	774,00 
02.04.2020 	719,00 
09.04.2020 	136,00 
16.04.2020 	133,00 
23.04.2020 	157,00 
30.04.2020 	850,00 
07.05.2020 	940,00 
14.05.2020 	933,00 
21.05.2020 	422,00 
28.05.2020 	952,00 
04.06.2020 	136,00 
11.06.2020 	701,00


Таблица результат
Дата мес 	Сумма 
29.фев.20 	550,00 
31.мар.20 	2 560,57 
30.апр.20 	1 481,43 
31.май.20 	3 305,29 
30.июн.20 	778,71 
31.июл.20 	0,00


Как выполнить скрипт в ORACLE?
SELECT yy, mm, SUM(part) SUMM 
FROM (
  SELECT 
  *, 
  dateadd(day, -d, date_week) dd, SUMM * 0.2 part, 
  DATEPART (month  , dateadd(day, -d, date_week)) mm, 
  DATEPART (year  , dateadd(day, -d, date_week)) yy
  FROM dbo.Tbl
  CROSS JOIN (
    SELECT 0 d UNION SELECT 1  UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 
    UNION SELECT 5 UNION SELECT 6
  ) days
  WHERE  DATEPART ( weekday  ,  dateadd(day, -d, date_week) ) NOT IN (1, 7)
) daily
GROUP BY yy, mm
  • Вопрос задан
  • 320 просмотров
Пригласить эксперта
Ответы на вопрос 1
tsklab
@tsklab Куратор тега Transact-SQL
Здесь отвечаю на вопросы.
Использовать синтаксис ORACLE: DatePart, Interval Expressions.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы