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