2013-08-27 54 views
0

我有两个表RDC和Cons_Status,rdc在其中有一个唯一的列RDC_ConsNO。对照此寄售编号,Cons_Status表中可能有多个记录,如附图所示。我想编写一个查询,其中只有一条记录加入了sts_id最大的状态。我使用SQL Server 2012的SQL Server组By和左外部联接自定义结果集

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 

数据库图表为表

enter image description here

+2

不要显示的图像。链接[有时死了](http://en.wikipedia.org/wiki/Link_rot),我们也不能使用它们来创建示例数据。 –

+0

@TimSchmelter请现在看看。 – MegaMind

+1

我不明白,你刚刚添加了更多的图像。如果您要复制/粘贴示例数据,我们可以通过使用[[Text to DDL]](http://webapps.stackexchange)[SQL-Fiddle](http://sqlfiddle.com/)中的数据和模式.com/questions/41382/sql-fiddles-text-to-ddl-option)功能。 –

回答

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 
+0

@ t-clause.dk感谢跨应用程序确实有效,但它消除了左外连接的用法。如果cons_status表中没有关联记录,则它不会返回任何内容。 – MegaMind

+0

@MegaMind它现在是外面适用 –