Я работаю над DB2 Blu с таблицами, организованными по столбцам.
Мой набор данных выглядит следующим образом:
Day month year value
------- -------
20200101 202001 2020 100
20200102 202001 2020 110
...
20200215 202002 2020 120
Я хочу агрегировать по неделям, месяцам и годам для этого результата :
Id value
2020 12000
202001 4000 'january
202002 4000 'february
2020001 700 'first week of 2020
Для этого у меня также есть таблица d_tps
Type Id week month year
J 20200101 2020001 202001 2020
J 20200102 2020001 202001 2020
...
J 20200215 2020007 202002 2020
M 202001 null 202001 2020
M 202002 null 202002 2020
Y 2020 null null 2020
Мой подход заключается в следующем
select d.id, sum(value) from tab1
Inner join d_tps d
On d.id = tab1.year
Or d.id = tab1.month
Or d.id = tab1.year
group by d.id
Он работает и возвращает ожидаемый результат. К сожалению, в плане запроса условие соединения с OR приводит к тому, что оператор CTQ приходит раньше, и большая часть запроса (который в действительности является более сложным) обрабатывается как строки, а не столбцы.
Как я могу его оптимизировать?