2017-08-29 28 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

私の答えを編集します。 最新の検索結果を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 Flavorによっては動作しない可能性もありますが、私はあなたのdatあなたはより多くの情報(多分スキーマ/タイプ、SQLフレーバー、多分二、三ダミー行)を供給することができれば私は、私はあなたが本当に欲しいものを推測していsubkonstrukt同様

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 
関連する問題