首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >先知。在带有GROUP BY的INSERT中使用NEXTVAL

先知。在带有GROUP BY的INSERT中使用NEXTVAL
EN

Stack Overflow用户
提问于 2015-05-09 01:50:03
回答 1查看 2K关注 0票数 1

我有下面的插页

代码语言:javascript
复制
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为记录生成主密钥。

EN

回答 1

Stack Overflow用户

发布于 2015-05-09 01:55:02

您可以使用subselect:

代码语言:javascript
复制
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
);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30129878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档