2016-10-19 8 views
0

こんにちは、私のクエリが別のレコードを返さない理由を見てください。私は次の条件で結果を得たいOE1='SCHEDCHNG'、orderidまたはordernumごとに最近のレコードだけが必要なのは、ordernumまたはorderidごとに1レコードだけで、dropdateもnullです。私のクエリはクエリが別のレコードを返さない

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」は同一の行を除外しているため、画像内のすべての行が異なります。 –

+0

@JaydipJすみません、私はそれを恋しく思っていますが、これは結果セットには影響しません。 –

+0

これらは異なるレコードです。たとえば、1870616には2つの異なるIDがあります。 –

答えて

2

かなりスパースが、私はあなたがこれらの線に沿って何かを望んでいると思います。

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
あなたは以下のようでmaxとグループを使用して試すことができます

以下のとおりです。ここでは詳細に

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