• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:データが重複するのを回避するには・・・(泣))

データ重複回避のためのSQLサブクエリとは?

このQ&Aのポイント
  • データベースの重複を回避するためにSQLサブクエリを使用していますが、結果に重複が生じてしまいます。
  • DISTINCTを使用すると、結果には重複がなくなりますが、一部の行が表示されなくなる問題があります。
  • 担当者の重複を避けつつ、竹輪と胡瓜の要素を含む担当者を表示したい場合、どのような解決策があるのか検討しています。また、Order ByとGroup Byの併用は可能でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.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)
回答No.1

>DISTINCTだと一つの行しか見えなくなってしまいます の意味がよくわかりませんね。。 書かれているデータに対し、書かれているクエリを実行すると、 _____担当_____商品_____売上品 _____XXXX_____1111______竹輪 _____XXXX_____1111______胡瓜 _____XXXX_____3333______竹輪 _____XXXX_____3333______胡瓜 こうなりますね?これをどうしたいか教えてください。 ちなみに、GROUP BYとORDER BYは併用可能です(GROUP BYが先)。

komarimono
質問者

補足

担当のXXXXの4つレコードが重複してしまうのでXXXXを1つのみ表示にしたいんです。