2016-10-19 1 views
0

Hallo können Sie bitte einen Blick, warum meine Abfrage nicht eindeutig Datensatz zurückgibt. Ich möchte Ergebnis mit folgender Bedingung OE1='SCHEDCHNG', brauchen nur die jüngsten Datensätze pro Orderid oder Bestellnummer bedeutet nur ein Datensatz pro Bestellnummer oder Bestellnummer und auch dropdate ist null. Meine Frage ist, wie untenAbfrage wird nicht eindeutig Datensatz zurückgegeben

select DISTINCT TOP 100 OE.ORDERID,OE.ID,OE.ORDERNUM,OE.OE4 from OrderExports OE 
inner join (
    select ORDERNUM, max(OE4) as MaxDate 
    from OrderExports 
    group by ORDERNUM 
) tm 
on OE.ORDERNUM = tm.ORDERNUM and OE.OE4 = tm.MaxDate 
inner join orde_ O on OE.ORDERID = O.ORDERID 
WHERE OE1='SCHEDCHNG' AND O.DROPDATE is null 

query result with duplicate record

+1

'DISTINCT' schließt identische Zeilen aus, alle Zeilen in Ihrem Bild sind unterschiedlich. –

+0

@JaydipJ tut mir leid, ich vermisse das, aber das wird nicht auf Ergebnismenge auswirken Ich denke –

+0

Dies sind unterschiedliche Datensätze. Zum Beispiel hat 1870616 zwei verschiedene IDs –

Antwort

2

recht spärlich auf Details hier, aber ich glaube, Sie etwas in dieser Richtung fehlen .

with SortedResults as 
(
    select OE.ORDERID 
     , OE.ID 
     , OE.ORDERNUM 
     , OE.OE4 
     , ROW_NUMBER() over(partition by OE.ORDERID, OE.ORDERNUM order by OE.OE4 desc) as RowNum 
    from OrderExports OE 
    inner join 
    (
     select ORDERNUM 
      , max(OE4) as MaxDate 
     from OrderExports 
     group by ORDERNUM 
    ) tm on OE.ORDERNUM = tm.ORDERNUM and OE.OE4 = tm.MaxDate 
    inner join orde_ O on OE.ORDERID = O.ORDERID 
    WHERE OE1='SCHEDCHNG' 
     AND O.DROPDATE is null 
) 

select ORDERID 
    , ID 
    , ORDERNUM 
    , OE4 
from SortedResults 
where RowNum = 1 
0

Sie können versuchen, durch, wie unten max und der Gruppe mit:

SELECT a.ID, max(a.ORDERID) as OrderID, max(a.ORDERNUM) as OrderNum,MAX(OE.OE4) as OE4 FROM 
(
--your query 
) a 
group by a.ID 
Verwandte Themen