2017-08-29 79 views
0

我從SQL數據庫中提取信息,但由於多次更新而顯示不同時間的所有行。 我設法消除重複使用不同的功能,但仍然顯示多行的變化。SQL最近更新的行

原始數量= 4
更新1數量= 5
更新2數量= 6

所有我想是最近更新的每一行是OLLNID

SELECT DISTINCT 
    OLMCU, 
    OLKCOO, 
    OLDOCO, 
    OLDCTO, 
    Date(OLTRDJ, CYYDDD) AS OLTRDJ, 
    OLLNID AS OLLNID_1, 
    OLDSC1, 
    OLDSC2 AS OLDSC2_1, 
    OLUOM, 
    OLUORG, 
    OLPRRC, 
    OLAEXP, 
    OLANBY 
FROM 
    E1PDES01.PRODDTA.F43199 F43199 
WHERE 
    OLMCU = '13248' 
    AND Date(OLTRDJ, CYYDDD) >= '01/01/2017' 
    AND OLDCTO = 'OP' 
    AND OLDOCO = 13484379 
ORDER BY 
    6 
+1

什麼味道的sql? – scsimon

+1

ORDER BY序數位置自上個千年以來已被棄用。 (1992?)改爲'ORDER BY OLLNID_1'。 – jarlh

+0

DISTINCT不是一個函數。它是'SELECT DISTINCT'的一部分,適用於整個選定的行。 – jarlh

回答

0

像subkonstrukt我猜你真正想要的。 如果您想要OLLNID的最新結果(例如日期),那麼您可以將所有其他值(當它們不同時)進行分組並選擇最大OLLNID。

SELECT 
    OLMCU, 
    OLKCOO, 
    OLDOCO, 
    OLDCTO, 
    Date(OLTRDJ, CYYDDD) AS OLTRDJ, 
    MAX(OLLNID) AS OLLNID_1, 
    OLDSC1, 
    OLDSC2 AS OLDSC2_1, 
    OLUOM, 
    OLUORG, 
    OLPRRC, 
    OLAEXP, 
    OLANBY 
FROM E1PDES01.PRODDTA.F43199 F43199 
WHERE OLMCU = '13248' 
     AND Date(OLTRDJ, CYYDDD) >= '01/01/2017' 
     AND OLDCTO = 'OP' 
     AND OLDOCO = 13484379 
GROUP BY 
    OLMCU, 
    OLKCOO, 
    OLDOCO, 
    OLDCTO, 
    OLTRDJ, 
    OLDSC1, 
    OLDSC2, 
    OLUOM, 
    OLUORG, 
    OLPRRC, 
    OLAEXP, 
    OLANBY; 
0

取決於你使用的SQL風味這可能行不通,我也對你的dat做了一些瘋狂的假設一所以,如果你能提供更多的信息(也許模式/類型,SQL的味道,也許是兩或三個虛擬行)我將編輯我的答案

SELECT 
    org.OLMCU, 
    org.OLKCOO, 
    org.OLDOCO, 
    org.OLDCTO, 
    Date(org.OLTRDJ, CYYDDD) AS OLTRDJ, 
    org.OLLNID AS OLLNID_1, 
    org.OLDSC1, 
    org.OLDSC2 AS OLDSC2_1, 
    org.OLUOM, 
    org.OLUORG, 
    org.OLPRRC, 
    org.OLAEXP, 
    org.OLANBY 
FROM 
    E1PDES01.PRODDTA.F43199 F43199 as org 
LEFT OUTER JOIN E1PDES01.PRODDTA.F43199 F43199 aux ON org.OLLNID = aux.OLLNID AND org.OLLNID < aux.OLLNID 
WHERE 
    org.OLMCU = '13248' 
    AND Date(org.OLTRDJ, CYYDDD) >= '01/01/2017' 
    AND org.OLDCTO = 'OP' 
    AND org.OLDOCO = 13484379 
    AND aux.OLLNID IS NULL 
GROUP BY 
    org.OLMCU, 
    org.OLKCOO, 
    org.OLDOCO, 
    org.OLDCTO, 
    Date(org.OLTRDJ, CYYDDD) AS OLTRDJ, 
    org.OLLNID AS OLLNID_1, 
    org.OLDSC1, 
    org.OLDSC2 AS OLDSC2_1, 
    org.OLUOM, 
    org.OLUORG, 
    org.OLPRRC, 
    org.OLAEXP, 
    org.OLANBY 
ORDER BY org.OLLNID