我有一个简单的查询,我运行多个文件,并使用UNION结合到结果。我的WHERE子句之一是需要更改的日期。我想知道是否有办法立即更改每个文件的日期参数,而不是在我的select语句中的每个位置都改变它?在下面的示例中,我想在两个位置更改CYYMMDD,而无需在两个位置手动更新。
SELECT
POATYP,
POACO#,
PHVND,
POAOR#,
POACOD,
POAAMT + POARC$ AS COLUMN0000
FROM
CORP01.DSFILES95.DSPOACA DSPOACA,
CORP01.DSFILES95.DSPOHDR DSPOHDR
WHERE
DSPOACA.POACO# = DSPOHDR.PHCO#
AND DSPOACA.POAOR# = DSPOHDR.PHPO#
AND ( POATYP = A
AND PHPOD >= CYYMMDD)
UNION SELECT
POATYP,
POACO#,
PHVND,
POAOR#,
POACOD,
POAAMT + POARC$ AS COLUMN0000
FROM
CORP01.DSFILES17.DSPOACA DSPOACA,
CORP01.DSFILES17.DSPOHDR DSPOHDR
WHERE
DSPOACA.POACO# = DSPOHDR.PHCO#
AND DSPOACA.POAOR# = DSPOHDR.PHPO#
AND ( POATYP = A
AND PHPOD >= CYYMMDD)
答案 0 :(得分:4)
我有时会为此目的使用CTE
with params as (
select CYYMMDD as cyymmdd
)
select *
from ((select . . .
from params cross join
. . .
where . . . PHPOD >= CYYMMDD
) union
(select . . .
from params cross join
. . .
where . . .
) . . .
) x;
注意:
UNION ALL
,除非您打算承担删除重复项的开销。JOIN
语法。简单规则:从不在FROM
子句中使用逗号。