2017-08-24 13 views
-1

私は製品のproduct_idとその高さ、幅、深さを持つ非常に単純なテーブルを持っています。 Product_idは、私が使用しているテーブルに複数回存在する可能性があります。したがって、別のステートメントを使用しました。 ただし、特定のproduct_idの高さ、幅、深さの組み合わせは一意である必要があります。少なくとも1つの異なる次元を持つ製品を見つけるにはどうすればよいですか?

下記例: それは寸法の2組(7,3を有しているのでPRODUCT_ID 1002については、それは、大丈夫ではない一次元のみの組み合わせ(6,2,2) を有するためPRODUCT_ID 1003については、それは、大丈夫です、3 and 9,3,3)

これらのレコードのみを1002のように表示するには、1つのproduct_idに複数の次元の組み合わせがありますか?

ご協力いただきありがとうございます。

答えて

0

あなたがgroup byhavingを使用することができます。

select product_id 
from t 
group by product_id 
having min(height) <> max(height) or 
     min(width) <> max(width) or 
     min(depth) <> max(depth); 

あなたは、元のテーブルの行のリストを望んでいた場合は、その後、別のアプローチが推奨されます - existsを使用して:

select t.* 
from t 
where exists (select 1 
       from t t2 
       where t2.product_id = t.product_id and 
        (t2.height <> t.height or t2.width <> t.width or 
        t2.depth <> t.depth 
        ) 
      ); 
+0

こんにちは、感謝あなたのお手伝いをしています。残念ながら、最初のクエリではレコードが表示されません。高さ、幅、深さは「フロート」として設定されます。これは、このクエリが値を返さない理由ですか? – TylerDurden887

+0

@ TylerDurden887。 。 。かもね。同じように見える2つの値は、浮動小数点として表現されている場合、実際には非常に少量異なる場合があります。 –

関連する問題