2017-03-07 3 views
0

在庫レポートのSQLクエリを作成しようとしています。私はこれまで、ユニークなパーツナンバーとその説明、そして数量を手に取り戻すSQLクエリーを作成しました。顧客名をレポートに追加したいのですが、一部のパーツを複数の顧客に販売しているため、DISTINCTステートメントにもかかわらず、部品番号と数量に重複が生じます。 1つの部品につき1つの顧客だけに結果を限定する方法はありますか?私はSQLに慣れていないので、明らかなものがないと思います。ここに私のクエリは次のとおりです。SQLで重複しました

私が見るエピコを使用

SQL Query

select distinct [Part].[PartNum] as [Part_PartNum] 
    , [Part].[PartDescription] as [Part_PartDescription] 
    , [PartBin].[OnhandQty] as [PartBin_OnhandQty] 
from Erp.Part as Part 
inner join Erp.ShipDtl as ShipDtl on Part.Company = ShipDtl.Company 
          And Part.PartNum = ShipDtl.PartNum 
inner join Erp.PartBin as PartBin on Part.Company = PartBin.Company 
          And Part.PartNum = PartBin.PartNum 
order by Part.PartNum 
+1

画像へのリンクとしてクエリをテキストとして追加しないでください。 – Jens

+1

サンプルテーブルのデータと期待される結果を追加します。 (同様にテキストをフォーマット。)別個 \t [パーツ]を選択 – jarlh

+0

[PARTNUM] [Part_PartNum]、 \t [パート]。ようPartDescription] [Part_PartDescription]、として \t [PartBin]。[OnhandQty]として[PartBin_OnhandQtyパート としてErp.Partから】 インナー\t Part.Company = ShipDtl.Company にShipDtlとしてErp.ShipDtlに参加し \t Part.PartNum = ShipDtl.PartNum内側 が\t部分にPartBinとしてErp.PartBinに参加.Company = PartBin.Company および \t Part.PartNum = PartBin.PartNum order by Part.PartNum –

答えて

0

...あなたのselect文は情報のみを引き戻すされているので

は、あなたがShipDtlテーブルに参加している理由がありますPartテーブルとPartBinテーブルから?次のことを試してみてください。

SELECT p.PartNum, PartDescription, OnHandQty 
FROM erp.Part AS Part INNER JOIN 
    erp.PartBin AS PartBin ON Part.Company = PartBin.Company and Part.PartNum = PartBin.PartNum 

もしてグループを必要となる、あなたの会社が複数のビンを使用している場合、あなたはその会社の合計を得るためにOnHandQtyフィールド上の加算を行わなければならないことにも注意してくださいステートメント。

+0

私はもともとshipdtlをクエリに含めました。私はCustomer名も引き出していました。しかし、私は顧客テーブルをプルすると、複数の顧客に販売されている部品があるため、重複した行が表示されています。 –

+0

@AliceElizabethたぶん私は誤解しているかもしれませんが、あなたの質問は私にはあまり意味がありません。インベントリ情報を格納するPartBinテーブルから情報を取り戻そうとしていますが、出荷トランザクションを保持するShipDtlテーブルから顧客を引き出したいとします。直接関係のない情報を取り戻そうとしているようです。 ShipDtlテーブルに部品を通すには、それに対してPOを切断する必要があります。 PartBinテーブルは、情報を販売するのではなく、場所に基づいて在庫を分割します。私はあなたが2つのレポートをマージしようとしていると思います。 – user2572833

+0

うわー、これは私のレポートに "顧客"の名前を付ける効果的な方法ではないことがわかりました。私は再編成し、この顧客情報をより良い方法で見つけ出す必要があります。有難うございます。 –

0

次のようなものが動作する可能性があります。サブクエリを使用して、該当する単一の会社を特定します。

私は、あなたが参加している「会社」フィールドではなく、会社の詳細を引き出すことができる別のテーブル「会社」もあると考えています。あなたは私がちょうど "最小"の会社を返すものにしたことがわかります。同じことをする他の方法があります。代わりに、最小(または最大または他の何か)の会社を「パーツ」テーブルから取ることができます。あなたがどのように乗っているか教えてください。

​​
+0

ありがとう、これはMin/Maxを私の利点に使う方法を理解するのに便利でした。ちょっとした調整をして、私はそれを機能させることができると思います。悲しいかな、私は初心者なのでアップ投票はできませんが、私は貴重な情報をたくさん得ています。 –

+0

アリスに心配はありません。うまくいけば、私の回答とuser2572833の回答との間に、解決策のメイクがあります。 –