SQL:MERGE INTO使用示例

eg:

<select id="importDataToMarquee">
     MERGE INTO WARN_MARQUEE B USING (
            SELECT 
	              #{id}                AS C_INF_ID,
		          A.C_CRD_ACCPT_ID     AS C_CRD_ACCPT_ID,
		          A.C_ACCPT_NAME_LOC   AS C_ACCPT_NAME_LOC,
		          COUNT(A .C_CARD_NBR) AS C_CARD_COUNT,
	             #{status}             AS C_INF_STS,
	              SYSDATE              AS D_EFT_TM,
	             TO_DATE(#{invalidTime}, 'SYYYY-MM-DD HH24:MI:SS')        AS D_NVLD_TM,
	              SYSDATE              AS D_CRT_TM,
	             #{userName}           AS C_CRT_PSN,
	              SYSDATE              AS D_MDF_TM,
	             #{userName}           AS C_MDF_PSN
	       FROM
		      STG_ONL_FIN A
	       INNER JOIN WARN_FRD_MARK D ON D.C_TRX_ID = A .C_TXN_ID
	      WHERE
		         D.C_FRD_IND = '1'
	        AND  CEIL (SYSDATE - D.D_MRK_TM)  &lt; 7
	      GROUP BY
		         C_CRD_ACCPT_ID,
		        A .C_ACCPT_NAME_LOC
	      HAVING
		        COUNT(C_CARD_NBR) >= 3	    
           ) 
         C  ON (B.C_CRD_ACCPT_ID = C.C_CRD_ACCPT_ID)
     WHEN MATCHED THEN
		 UPDATE SET
	         B.C_INF_STS = '1',
	         B.D_EFT_TM = SYSDATE,
	         B.D_NVLD_TM = TO_DATE(#{invalidTime}, 'SYYYY-MM-DD HH24:MI:SS'),
	         B.D_MDF_TM = SYSDATE,
			 B.C_CARD_COUNT=C.C_CARD_COUNT
     WHEN NOT MATCHED THEN
	     INSERT  VALUES (C.C_INF_ID,
                         C.C_INF_STS,
                         C.D_EFT_TM,
                         C.D_NVLD_TM,
                         C.D_CRT_TM,
                         C.C_CRT_PSN,
                         C.D_MDF_TM,
                         C.C_MDF_PSN,
                         C.C_CRD_ACCPT_ID,
                         C.C_ACCPT_NAME_LOC,
                         C.C_CARD_COUNT
                         )
  </select>

猜你喜欢

转载自blog.csdn.net/weixin_43513644/article/details/83507723