Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 查询未返回不同的记录_Sql Server_Stored Procedures_Distinct - Fatal编程技术网

Sql server 查询未返回不同的记录

Sql server 查询未返回不同的记录,sql-server,stored-procedures,distinct,Sql Server,Stored Procedures,Distinct,您好,您能看看为什么我的查询没有返回不同的记录吗。我希望结果具有以下条件OE1='SCHEDCHNG',每个orderid或ordernum只需要最近的记录意味着每个ordernum或orderid只需要一条记录,而且dropdate为null。我的问题如下 select DISTINCT TOP 100 OE.ORDERID,OE.ID,OE.ORDERNUM,OE.OE4 from OrderExports OE inner join ( select ORDERNUM,

您好,您能看看为什么我的查询没有返回不同的记录吗。我希望结果具有以下条件
OE1='SCHEDCHNG'
,每个orderid或ordernum只需要最近的记录意味着每个ordernum或orderid只需要一条记录,而且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 

您可以尝试使用max和group by,如下所示:

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 

您可以尝试使用max和group by,如下所示:

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 

这里的细节非常稀少,但我认为你需要一些类似的东西

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

这里的细节非常稀少,但我认为你需要一些类似的东西

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

DISTINCT
排除相同的行,图片中的所有行都是不同的。@JaydipJ很抱歉,我忽略了这一点,但这不会影响结果集,我认为这些是不同的记录。例如,1870616有两个不同的IDs@AlexK. 是的,所以我没有得到正确的结果,但我如何才能做到这一点,请建议me@JohnCappelletti我们可以使用所有结果在ORDERNUM上进行区分如果我不显示orderid
distinct
排除相同的行,则没有任何问题,图片中的所有行都不同。@JaydipJ抱歉,我错过了,但这不会影响结果集,我认为这些是不同的记录。例如,1870616有两个不同的IDs@AlexK. 是的,所以我没有得到正确的结果,但我如何才能做到这一点,请建议me@JohnCappelletti我们可以在ORDERNUM上使用所有结果进行区分。如果我不显示orderid,则没有任何问题