私はしばらくの間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空として表示したい
どんな助けでもいただければ幸いです!