【发布时间】:2013-01-06 21:47:52
【问题描述】:
我已经为 SQL Server 查询苦苦挣扎了一段时间,并意识到我必须从比我更了解 SQL Server 的人那里获得帮助。
环境:SQL Server 2008
SELECT
t1.SUPPL_ORDERNO,
t2.OUR_ORDER,
t3.CUST_INVOICE
FROM t1
LEFT OUTER JOIN t2
ON t1.SUPPL_ORDERNO = t2.ORDER_REM5
LEFT OUTER JOIN t3
ON t2.ORDER_REM5 = t3.INV_REM5
GROUP BY t1.SUPPL_ORDERNO, t2.OUR_ORDER, t3.CUST_INVOICE
ORDER BY t1.SUPPL_ORDERNO,t3.CUST_INVOICE
这是我通过上面的查询得到的结果:
SUPPL_ORDERNO OUR_ORDER CUST_INVOICE
------------------------------ --------- ------------
143914 64228 179890
143914 64228 179935
143914 64228 179995
143914 64228 179999
143914 64228 180067
143914 64228 180148
326042
326052 64549 180219
326086 64633
我为每个SUPPL_ORDERNO 和OUR_ORDER 组合获得多个CUST_INVOICE,但我只想返回最新的CUST_INVOICE(=最大的发票号)。
这是我要返回的结果:
SUPPL_ORDERNO OUR_ORDER CUST_INVOICE
------------------------------ --------- ------------
143914 64228 180148
326042
326052 64549 180219
326086 64633
总结:
- 如果
SUPPL_ORDERNO和OUR_ORDER的组合有不止一 (1) 个CUST_INVOICE,我只想显示数字最大的CUST_INVOICE - 如果没有
OUR_ORDER和CUST_INVOICE我希望它显示为空 - 如果有
OUR_ORDER而没有CUST_INVOICE我希望它显示为空
任何帮助将不胜感激!
【问题讨论】:
标签: sql sql-server sql-server-2008 join