我已经为 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
CUST_INVOICE
我为每个组合得到多个SUPPL_ORDERNO
,OUR_ORDER
但我只想返回最新的CUST_INVOICE
(=最大的发票号)。
这是我要返回的结果:
SUPPL_ORDERNO OUR_ORDER CUST_INVOICE
------------------------------ --------- ------------
143914 64228 180148
326042
326052 64549 180219
326086 64633
概括:
- 如果组合的数量超过一 (1)
CUST_INVOICE
,SUPPL_ORDERNO
并且OUR_ORDER
我只想显示CUST_INVOICE
数量最多的 - 如果没有
OUR_ORDER
,CUST_INVOICE
我希望它显示为空 - 如果有
OUR_ORDER
并且没有,CUST_INVOICE
我希望它显示为空
任何帮助,将不胜感激!