Sql 选择两个日期之间的所有记录,但根据铭牌选择同一天的一条记录

Sql 选择两个日期之间的所有记录,但根据铭牌选择同一天的一条记录,sql,tsql,Sql,Tsql,我已选择查询: select f.FirmaID,f.FirmaAdi,t.BelgeID,t.BelgeTuru,t.Tarih,t2.Plaka,t2.SasiNo,t4.AracMarka,t4.AracTip,case when x.Miktar=1 then 4 else x.miktar end as LastikAdet, t3.CariKodu,t3.CariAdi,t3.CariGsm1,t3.CariGsm2,t3.CariTel1,t3.CariTel2,t3.CariA

我已选择查询:

select 
f.FirmaID,f.FirmaAdi,t.BelgeID,t.BelgeTuru,t.Tarih,t2.Plaka,t2.SasiNo,t4.AracMarka,t4.AracTip,case when x.Miktar=1 then 4 else x.miktar end as LastikAdet,
t3.CariKodu,t3.CariAdi,t3.CariGsm1,t3.CariGsm2,t3.CariTel1,t3.CariTel2,t3.CariAdres
from alsatr t WITH (NOLOCK)
left join Firma f WITH (NOLOCK) on f.FirmaID = t.AlsatrFirmaID 
left join AracBilgi t2 WITH (NOLOCK) on t2.AracBilgiUID = t.AsAracBilgiUID and t2.AracBilgiID= t.AracBilgi
left join Cari t3 WITH (NOLOCK) on t.AsCariUID= t3.CariUID
left join Araclar t4 WITH (NOLOCK) on t4.AracID= t2.AB_AracID
outer apply 
(select COUNT(1) soktak,Miktar FROM alsatD d WITH (NOLOCK) 
where 
d.AlsatDUID = t.AlsatrUID and d.AsStokKodu='LA-0001' group by Miktar) x 
where 
isnull(t3.FiloID,0) > 0 
and t.Tarih between '04.30.2020' and '04.31.2020'
and t.BelgeTuru=55
and x.soktak > 0
 and f.FirmaID not in (1,2,103,106,109,114)
order by t.Tarih desc, f.FirmaID desc, t.BelgeID desc

因此,我想选择两天之间的所有记录,但我想选择一条,最新记录可能取决于同一天最后一次带同一个车牌的行李。

将您的查询包含在CTE中,并使用行号窗口功能:

WITH cte AS (
  <your query here>
)
SELECT 
  t.FirmaID, t.FirmaAdi, t.BelgeID, t.BelgeTuru, t.Tarih, t.Plaka, t.SasiNo, t.AracMarka, 
  t.AracTip, t.LastikAdet, t.CariKodu, t.CariAdi, t.CariGsm1, t.CariGsm2, t.CariTel1,
  t.CariTel2, t.CariAdres
FROM (
  SELECT *, ROW_NUMBER() OVER (PARTITION BY Tarih, Plaka ORDER BY BelgeID DESC) rn
  FROM cte
) t
WHERE t.rn = 1

你为什么对每张桌子都使用NOLOCK?你知道它是干什么的,对吗?这不是我最初的代码。但是谢谢你的通知。