2016-07-14 5 views
-2

テーブルにlots (LOT_ID)が複数あり、各ロットに複数のproducts(PRODUCT_ID)が含まれていて、各製品の下に複数のorders (ORDER_ID)があります。私は、私はあなたが最初のORDER_ID上でグループを適用すべきだと思うし、結果セットを取得します与えられたLOTテーブル内に重複が見つかりました

S.NO LOT_ID Product_ID Order_ID 
1  101 P108  90001 
2  101 P109  90001 
3  101 P110  80900 
4  102 S189  10098 
5  102 S234  10087 
6  102 S465  10098 
7  102 S342  10050 
8  103 L109  20090 
9  103 L110  20098 
10  103 L111  20020 

望ましい結果

S.NO  LOT_ID Product_ID Order_ID 
1   101  P108  90001 
2   101  P109  90001 
3   102  S189  10098 
4   102  S465  10098 
+0

解決策は 'stackoverflow'または' googling'ですでに投稿されているはずです。質問を投稿する前にたくさん検索する必要があります。そうしないと、重複した質問を投稿することがあります。 **。 – Avishek

+0

このような単純な選択は次のとおりです: 'SELECT [S.NO]、LOT_ID、PRODUCT_ID、ORDER_ID FROM myTable T WHERE ORDER_ID IN(SELECT ORDER_ID FROM myTable WHERE LOT_ID = T.LOT_ID GROUP BY ORDER_ID COUNT(*)> 1); ' – ZLK

+0

上記のコードは複数の注文の結果を表示していますが、複数の商品について繰り返される注文を知りたいのですが、私の質問で述べた例を見てください。注文ID(90001&10098)は、同じLOTの複数の商品に対して2回繰り返されます。結果セットには、これらの注文に関連するLOT_ID、PRODUCT_IDのみが表示されます – Vamshi

答えて

0

のために複数のproductsに対して繰り返されるorder ID’sを知っていただきたいと思います。投稿された回答を確認してください、しかし私はこれを実行していません。ユニークな文字列のカウントがユニークロットと受注の等しいカウントがない場合

select LOT_ID, Product_ID, Order_ID 
from <tableName> 
where Order_ID IN (SELECT Order_ID FROM <tableName> where LOT_ID in (101,102) 
GROUP BY Order_ID HAVING COUNT(*) > 1); 
+0

異なるロットIDに対して注文IDが存在する可能性がある場合、望ましくない結果が生じます。また、おそらく単なるロット101/102以上をチェックする必要があります。より良いのは、fromステートメントのテーブルをエイリアスし、inステートメントの中でそれを参照することです(私のコメントを参照してください)。 – ZLK

0

カウントリピートは、その後、数量を選択します

select t.*, count(*) over (partition by t.LOT_ID, t.Product_ID, t.Order_ID) as c 
     , count(*) over (partition by t.LOT_ID, t.Order_ID) as c2 
    from t 

を必要とする - あなたのケースです。