- ベストアンサー
データ重複回避のためのSQLサブクエリとは?
- データベースの重複を回避するためにSQLサブクエリを使用していますが、結果に重複が生じてしまいます。
- DISTINCTを使用すると、結果には重複がなくなりますが、一部の行が表示されなくなる問題があります。
- 担当者の重複を避けつつ、竹輪と胡瓜の要素を含む担当者を表示したい場合、どのような解決策があるのか検討しています。また、Order ByとGroup Byの併用は可能でしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。それはこういうことですか? _____担当_____商品_____売上品 _____XXXX_____1111______竹輪 ______________1111______胡瓜 ______________3333______竹輪 ______________3333______胡瓜 だとすると、それは「見栄えの調整」ということですね。 本来はそれはSQLの領分ではない、ということをご理解の上、以下をお試しください(たしか10gですよね)。 SELECT CASE WHEN (ROW_NUMBER() OVER (PARTITION BY 担当 ORDER BY 商品, 売上品))=1 THEN 担当 END, 商品, 売上品 FROM TableName WHERE 担当 IN (SELECT 担当 FROM TableName WHERE 売上品 = '竹輪') AND 担当 IN (SELECT 担当 FROM TableName WHERE 売上品 = '胡瓜') AND 売上品 IN ('竹輪','胡瓜') ORDER BY 担当,商品,売上品
その他の回答 (1)
- jamshid6
- ベストアンサー率88% (591/669)
>DISTINCTだと一つの行しか見えなくなってしまいます の意味がよくわかりませんね。。 書かれているデータに対し、書かれているクエリを実行すると、 _____担当_____商品_____売上品 _____XXXX_____1111______竹輪 _____XXXX_____1111______胡瓜 _____XXXX_____3333______竹輪 _____XXXX_____3333______胡瓜 こうなりますね?これをどうしたいか教えてください。 ちなみに、GROUP BYとORDER BYは併用可能です(GROUP BYが先)。
補足
担当のXXXXの4つレコードが重複してしまうのでXXXXを1つのみ表示にしたいんです。