簡體   English   中英

Oracle PL / SQL-根據列的最大值插入值

[英]Oracle PL/SQL - Inserting values based on max of columns

我正在嘗試將主鍵為PRODUCT的數據(產品,時間戳)從表A,B和C插入表xyz。 所有這三個表都有一個timestamp列以及其他列。 我想插入這三個表(A,B和C)的乘積和時間戳的最大值。

如果表xyz中已經存在產品,則無需指定要發生的事情,因此,在不存在該假設的情況下,可以使用如下查詢:

Insert into XYZ(Product, Timestamp)
Select Product, max(timestamp)
  from (select product, timestamp from a union all
        select product, timestamp from b union all
        select product, timestamp from c)
 group by product

您可以嘗試以下方法:

INSERT INTO xyz
  ( product, timestamp )
SELECT MAX(product) KEEP ( DENSE_RANK FIRST ORDER BY timestamp DESC ) AS product
     , MAX(timestamp)
  FROM a
 UNION ALL
SELECT MAX(product) KEEP ( DENSE_RANK FIRST ORDER BY timestamp DESC ) AS product
     , MAX(timestamp)
  FROM b
 UNION ALL
SELECT MAX(product) KEEP ( DENSE_RANK FIRST ORDER BY timestamp DESC ) AS product
     , MAX(timestamp)
  FROM c;

希望這可以幫助。

根據Sentine的評論更新

試試這個(語法未驗證):

INSERT INTO xyz (product , timestamp) 
 (
    SELECT product , MAX(A.timestamp) 
      FROM A
    UNION
    SELECT product , MAX(B.timestamp) 
      FROM B
    UNION
    SELECT product , MAX(C.timestamp) 
      FROM C
) ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM