2013-08-27 55 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它現在是外面適用 –