わかりました私は以下のコードを持っています
SELECT PO_NUMBER, MIN(PO_QUANTITY) AS PO_QUANTITY, SUM(COALESCE(SHIPPED_WT, 0)) AS SHIPPED_WT
FROM VW_TRAFFIC_PO_SIDE
WHERE SYSDATE > PO_SHIPMENT_TO
GROUP BY PO_NUMBER
HAVING MIN(PO_QUANTITY) > SUM(COALESCE(SHIPPED_WT, 0))
これは、適切なデータを取得するという点で私が望むすべてを行いますが、次の行に沿って、より多くの列が必要です
SELECT PO_NUMBER, SO_ORIGIN, SO_PRODUCT, SUPPLIER, MIN(PO_QUANTITY) AS PO_QUANTITY, SUM(COALESCE(SHIPPED_WT, 0)) AS SHIPPED_WT, PO_SHIPMENT_FROM, PO_SHIPMENT_TO
FROM VW_TRAFFIC_PO_SIDE
WHERE SYSDATE > PO_SHIPMENT_TO
GROUP BY PO_NUMBER
HAVING MIN(PO_QUANTITY) > SUM(COALESCE(SHIPPED_WT, 0))
ただし、不要なデータを取得するため、他の列でグループ化することはできません。
何か案は?
Distinct を使用できることはわかっていますが、データを表示したい方法では、削除したくないレコードが削除されます
PS、私はSQLサーバーを使用しています。テーブルを作成/変更できません。使用するすべてのデータはビューに基づいており、それを変更することもできません
編集:私は答えを提供しましたが、エレガントではありません
PO PO Qty Tracking No Shipped Qty
PO 1 100 1 60
PO 1 100 1 60
PO 1 100 1 60
PO 1 100 2 15
PO 1 100 2 15
PO 2 50 2 20
PO 2 50 2 20
PO 2 50 3 30
PO 2 50 3 30
IN the above scenario, totals are
PO 1 PO 2
PO Qty 100 50
Shipped 75 50
Unshipped 25 0
- In each PO record, the PO qty is stated in full on each line and therefore is repeated each time the same PO is listed as a record
- Within a tracking no for the PO, the shipped quantity is stated in full and therefore is repeated each time the same tracking no (for the same PO #) is listed as a record
- So a tracking number can exist on two different PO’s (as in Tracking no 2 above) in which case the value is counted once for each PO