これがルールに違反しないことを願っています(私は新しいです、そしてはい、私はFAQをチェックしました)。
しかし、私は次のコードを持っています
SELECT DISTINCT PO_NUMBER, PO_TRACKING_NO, SUPPLIER, MIN(PO_QUANTITY),
SUM(SHIPPED_WT), PO_SHIPMENT_TO
FROM VW_TRAFFIC_PO_SIDE
WHERE SYSDATE > PO_SHIPMENT_TO AND
(PO_QUANTITY > SHIPPED_WT OR PO_TRACKING_NO IS NULL)
GROUP BY PO_NUMBER, PO_TRACKING_NO, SUPPLIER, PO_SHIPMENT_TO
HAVING PO_QUANTITY > SUM(SHIPPED_WT)
次のことを行うと想定されます。トラッキングごとに1つのPO#を表示します。 SUM、MIN、GROUP BY、およびHAVINGの部分):任意のPO_NUMBER(表示されている)のSHIPPED_WTを結合し、PO_Quantityよりも小さい場合はその結合された数値を表示する必要がありました
whereステートメントも正しいです。コンパイルに成功したので、上記の部分を追加したときに初めて問題が発生しました。
編集:上記のコードを今すぐコンパイルします(以下の回答に感謝します)
しかし、私のロジックは間違っており、私が望んでいることを実行しません。正しく実行する1つのことは、1つのPO_NUMBERを1つのPO_TRACKING_NOで取得することです(PO_tracking_noが異なる限り、重複するpo_numberが存在する可能性があります。番号が異なる限り、重複した追跡が存在する可能性があります)
編集:以下は関連する列がどのように見えるかです、そして私はそれの何が悪いのか(そして私が改訂されたコードで何をしようとしたのか)を説明します
PO_NUMBER PO_TRACKING_NO MIN(PO_QUANTITY) SUM(SHIPPED_WT)
123 C100 1000 750
123 C101 1000 250
コードは、このようなレコードを取得し、SHIPPED_WTを1つの数値(1000)に結合することを想定しており、その新しい数値はPO_QUANTITYに対して=であるため、クエリに表示されないはずです。さらに、PO_TRACKING_NOのWHERE ISNULLが機能していません(PO_NUMBERとPO_TRACKING_NOの重複ではないと仮定して、そのフィールドにnull値が含まれるすべてのレコードを表示する必要があります)