Sql 守则的解释

Sql 守则的解释,sql,sql-server,events,Sql,Sql Server,Events,回顾了一些代码,我跌跌撞撞地看到了这段SQL代码,我不明白它在做什么 INNER JOIN PPORDFIL_SQL on dbo.att_Synergy_Absences.ItemCode = PPORDFIL_SQL.item_no and PPORDFIL_SQL.id in (Select top 1 p2.ID from PPORDFIL_SQL as p2 where p2.item_no = PPOR

回顾了一些代码,我跌跌撞撞地看到了这段SQL代码,我不明白它在做什么

INNER JOIN PPORDFIL_SQL 
    on dbo.att_Synergy_Absences.ItemCode = PPORDFIL_SQL.item_no   
    and PPORDFIL_SQL.id in 
        (Select top 1 p2.ID
         from  PPORDFIL_SQL as p2
         where p2.item_no  = PPORDFIL_SQL.item_no 
           and p2.ord_status = PPORDFIL_SQL.ord_status 
           and dbo.att_Synergy_Absences.syscreated <= ppordfil_sql.entered_dt 
         order by p2.id )
据我所知,假设显示1条条目,而不管最早的条目是多少

例如,同一物料号有多个物料,但订单号不同,因此即使同一物料号有多个订单号,也只会显示一个条目

我试着运行代码,但没有成功


对它的功能有什么评论吗?或者我是否真的做对了?lol

您的两个连接条件相互干扰

试着这样做:

INNER JOIN PPORDFIL_SQL on  PPORDFIL_SQL.id = (
  Select top 1 p2.ID 
  from  PPORDFIL_SQL  as p2
  where p2.item_no  = dbo.att_Synergy_Absences.ItemCode 
  and p2.ord_status = PPORDFIL_SQL.ord_status 
  and dbo.att_Synergy_Absences.syscreated <= ppordfil_sql.entered_dt 
  order by p2.id 
)

这是一个开始得到答案的好地方。您的子查询是按ID排序的-也许应该改为按日期字段排序?