私はしばらくの間SQLServerクエリに苦労してきましたが、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
概要:
CUST_INVOICE
の組み合わせが複数あり、最大数のを表示SUPPL_ORDERNO
しOUR_ORDER
たい場合CUST_INVOICE
- ない場合とない場合は
OUR_ORDER
空CUST_INVOICE
として表示したい - ある場合
OUR_ORDER
とない場合はCUST_INVOICE
空として表示したい
どんな助けでもいただければ幸いです!