【问题标题】:SQL Server Group By and Left Outer Join Custom result setSQL Server Group By 和 Left Outer Join 自定义结果集
【发布时间】:2013-08-27 08:09:48
【问题描述】:

我有两个表 RDC 和 Cons_Status,rdc 中有一个唯一的列 RDC_ConsNO。根据这个托运单号,Cons_Status 表中可能有多个记录,如附图所示。我想编写一个查询,其中只有一条记录加入到具有最大 sts_id 的状态中。我正在使用 SQL Server 2012。

SELECT STS_ID,RDC_CONSNO,STS_STATUS , RDC_DATE,RDC_CUSTOMER,DEST_NAME FROM RDC LEFT OUTER JOIN CONS_STATUS ON RDC_CONSNO=STS_CONSNO
INNER JOIN DESTINATION ON DEST_ID=RDC_DESTINATION WHERE RDC_CONSNO='HD88300'
ORDER BY STS_ID

表的数据库图

【问题讨论】:

  • 不显示图像。链接are dead sometime,我们也不能用它们来创建示例数据。
  • @TimSchmelter 请立即查看。
  • 我不明白,您刚刚添加了更多图像。如果您要复制/粘贴示例数据,我们将使用 SQL-Fiddle"Text to DDL" 功能同时拥有数据和架构。
  • @TimSchmelter 我已经添加了查询,并认为您需要了解表结构才能更好地理解查询,如果您需要查询表单中的表结构,请告诉我

标签: sql join group-by having


【解决方案1】:

别忘了给你的列加上前缀

SELECT ?? FROM RDC
OUTER APPLY
(SELECT TOP 1 * FROM CONS_STATUS
WHERE RDC.RDC_CONSNO = STS_CONSNO
ORDER BY sts_id DESC
) a
INNER JOIN DESTINATION d
ON d.DEST_ID=RDC.RDC_DESTINATION 
WHERE RDC.RDC_CONSNO='HD88300'
ORDER BY a.STS_ID

【讨论】:

  • @t-clause.dk 感谢交叉应用确实有效,但它消除了左外连接的使用。如果 cons_status 表中没有关联记录,则它根本不返回任何内容。
  • @MegaMind 现在是外部应用
猜你喜欢
  • 2016-04-11
  • 2021-11-06
  • 2010-09-29
  • 1970-01-01
  • 2014-08-10
  • 2010-12-13
  • 2021-09-22
  • 1970-01-01
相关资源
最近更新 更多