我有下面的插页
INSERT INTO DFR_DIARY
(
SELECT ID_GEN_SEQUENCE.NEXTVAL,
A.TRANSACTION_REPORTING_UNIT_CD TRECON_RUC,
A.CYCLE_NUMBER_ID,
A.CYCLE_DATE CYCLE_STARTED_DT,
A.UNIT_DIARY_NUMBER_ID DIARY_NUMBER_ID,
'P' STATUS_CODE,
NULL MISSO_INPUT_ID,
A.UNIT_DIARY_DATE DIARY_DATE,
A.UNIT_DIARY_DATE OPENED_DATE,
A.UNIT_DIARY_DATE CERTIFIED_DATE,
COUNT(*) TRANS_ACCEPTED_QY,
0 TRANS_REJECTED_QY,
'DFR LOAD' CREATEDBY,
SYSDATE CREATEDDATE,
NULL,
NULL,
(SELECT ID FROM UDMIPS.DFR_CYCLE
WHERE TRECON_RUC = A.TRANSACTION_REPORTING_UNIT_CD AND
CYCLE_NUMBER_ID = A.CYCLE_NUMBER_ID AND
CYCLE_STARTED_DT = A.CYCLE_DATE) CYCLE_ID,
(SELECT ID FROM UDMIPS.DIARY
WHERE TRECON_RUC = A.TRANSACTION_REPORTING_UNIT_CD AND
DIARY_NUMBER = A.UNIT_DIARY_NUMBER_ID AND
DIARY_DATE = A.UNIT_DIARY_DATE) DIARY_ID
FROM UDMIPS.TEMP_TRANSACTION_RESEARCH A
WHERE
A.TRANSACTION_ERROR_CODE IS NULL AND
A.APPLICATION_SYSTEMS_SOURCE_CD = 'P' AND
A.TRANSACTION_SERIAL_NUMBER_ID IN
(SELECT TRANSACTION_SERIAL_ID FROM UDMIPS.DIARY_TRANSACTIONS)
GROUP BY A.CYCLE_NUMBER_ID,
A.CYCLE_DATE,
A.TRANSACTION_REPORTING_UNIT_CD,
A.UNIT_DIARY_NUMBER_ID ,
A.UNIT_DIARY_DATE
);这不管用。我得到了这里不允许的ORA-2287序列号。如果我对所有记录都使用一个像1或2这样的随机数,我就没问题。我猜是因为分组失败了,我在其他插入中使用了相同的方法,但没有group by,它很好。有没有办法绕过它。NEXTVAL为记录生成主密钥。
发布于 2015-05-09 01:55:02
您可以使用subselect:
INSERT INTO DFR_DIARY
(
SELECT ID_GEN_SEQUENCE.NEXTVAL, sub.*
FROM (SELECT
A.TRANSACTION_REPORTING_UNIT_CD TRECON_RUC,
A.CYCLE_NUMBER_ID,
A.CYCLE_DATE CYCLE_STARTED_DT,
A.UNIT_DIARY_NUMBER_ID DIARY_NUMBER_ID,
'P' STATUS_CODE,
NULL MISSO_INPUT_ID,
A.UNIT_DIARY_DATE DIARY_DATE,
A.UNIT_DIARY_DATE OPENED_DATE,
A.UNIT_DIARY_DATE CERTIFIED_DATE,
COUNT(*) TRANS_ACCEPTED_QY,
0 TRANS_REJECTED_QY,
'DFR LOAD' CREATEDBY,
SYSDATE CREATEDDATE,
NULL,
NULL,
(SELECT ID FROM UDMIPS.DFR_CYCLE
WHERE TRECON_RUC = A.TRANSACTION_REPORTING_UNIT_CD AND
CYCLE_NUMBER_ID = A.CYCLE_NUMBER_ID AND
CYCLE_STARTED_DT = A.CYCLE_DATE) CYCLE_ID,
(SELECT ID FROM UDMIPS.DIARY
WHERE TRECON_RUC = A.TRANSACTION_REPORTING_UNIT_CD AND
DIARY_NUMBER = A.UNIT_DIARY_NUMBER_ID AND
DIARY_DATE = A.UNIT_DIARY_DATE) DIARY_ID
FROM UDMIPS.TEMP_TRANSACTION_RESEARCH A
WHERE
A.TRANSACTION_ERROR_CODE IS NULL AND
A.APPLICATION_SYSTEMS_SOURCE_CD = 'P' AND
A.TRANSACTION_SERIAL_NUMBER_ID IN
(SELECT TRANSACTION_SERIAL_ID FROM UDMIPS.DIARY_TRANSACTIONS)
GROUP BY A.CYCLE_NUMBER_ID,
A.CYCLE_DATE,
A.TRANSACTION_REPORTING_UNIT_CD,
A.UNIT_DIARY_NUMBER_ID ,
A.UNIT_DIARY_DATE
) sub
);https://stackoverflow.com/questions/30129878
复制相似问题