问题
我有一张桌子,我需要使用以下规则进行选择
示例
如果 AUFT_PAT 年是2018年,而当前年份是2018年,那么我想根据 MONTH(AUFT_PAT)选择之前的所有月份,直到2018年1月
以下查询有效,但是在大型机上占用的CPU时间过多,例如50分钟,甚至还没有完成
每个 DBIN0XX 都有大约20.000个寄存器。
我对DB2场景还很陌生,所以我对如何优化它或如何分离查询没有一个很好的认识,任何帮助将不胜感激,因为它将直接影响我的开发。
DATEI01 SEL DBHOLDER AUFT_LOESCH_KZ IS NULL
AND AUFT_AUFT_ART IN ('E')
AND AUFT_FZG_ART IN ('0', '1', '2', 'E', 'F', 'G')
AND
(
AUFT_PAT <
(
SELECT
MIN(KALW_DATUM_JUL) PMON
FROM
D$DW7305.W73RKALW
WHERE
KALW_PMON = '+00'
)
AND SUBSTR(AUFT_PAT, 1, 4) YEAR = YEAR(CURRENT DATE) CURRENTYEAR
AND MONTH(CURRENT DATE) CURRENTMONTH > 1
)
OR
(
YEAR = CURRENTYEAR - 1
AND CURRENTMONTH = 1
)
OUT DBIN010
OUT DBIN020
OUT DBIN030
OUT DBIN040
OUT DBIN050
OUT DBIN060
OUT ZWAA071
OUT ZWAA090
OUT ZWAA150
OUT ZWAA200