• ベストアンサー

SQL初心者です。

SQL初心者です。 3項目が一致した重複データを省きたい。 テーブルAには 誕生年 名前 年齢 が 入っていて 誕生年、名前、年齢が同じレコードははぶきたいのですが、 どのように書いたらいいでしょうか。 Windos XP 言語:vbs DB Micosoft Sql server 2008

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

  • ベストアンサー
  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.2

誕生年、名前、年齢が同一で住所がことなる場合はどのレコードを取得するのでしょうか? たとえば、 誕生年|名前|年齢|住所|・・・ S34 |山田|24|大阪 S34 |山田|24|大阪 S34 |山田|24|大阪 S34 |山田|24|東京 というデータの場合は大阪と東京のどちらを取得するかの条件は決まっていますか? そんなデータは存在しないというならば、row_number関数を使って select 誕生年,名前,年齢,住所 from (  select 誕生年,名前,年齢,住所      ,row_number() over(partition by 誕生年,名前,年齢 order by 住所) row_num  from テーブルA ) where row_num = 1; とかでもいいかと思います。

参考URL:
http://msdn.microsoft.com/ja-jp/library/ms186734.aspx
obone
質問者

お礼

ありがとうございました。 いろいろ試してみます。

その他の回答 (1)

  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.1

画像が見られませんが・・ 重複を除外するにはdistinctすればいいです。 select distinct 誕生年,名前,年齢 from テーブルA とすると誕生年、名前、年齢が同一のレコードが複数件あっても1件だけ取得できます。

参考URL:
http://msdn.microsoft.com/ja-jp/library/ms187831.aspx
obone
質問者

補足

説明不足で申しわけありません。 画像はUPしたのですが、システムエラーでなんどやっても上手くいきませんでした。 取り出したい項目と重複除外の項目が一致していればいいのですが 重複チェックは誕生年,名前,年齢で取り出したい値が誕生年,名前,年齢,住所の場合 エラーになるのでdistinct を使わない方法ないでしょうか。 テーブルA 誕生年|名前|年齢|住所|・・・ S34 |山田|24|大阪 S34 |山田|24|大阪 S34 |山田|24|大阪 S32 |山下|21|大阪

関連するQ&A