dポイントプレゼントキャンペーン実施中!

SQL Server2005 Expressを使っているのですが。

下記のような3列の項目からなるテーブルがあり、ABCはそれぞれ数字として。

No1,No2,No3
A, B,
A, F,
B, C,
B, F,
B, ,
C, E, F


数字をユニークし、結果を A,B,C,E,F としたいのですが。

列(No1)だけでのユニークでよいなら
Select Distinct(No1) ・・・・・ と書けばよいのでしょうが。

現在は、各列でユニークし、配列にいれて重複は削除するやり方をしているのですが。

この例では3列ですが実際は5列以上あります。
SQLでスマートなやり方はないでしょうか?

A 回答 (2件)

#1です。

一部訂正。

unionでallを指定しなければ、重複排除されるので、#1のselect文のgroup byは不要。もし、各値が何件あったかといった情報も知りたい場合は、group byとcount関数等を組み合わせて使ってください。

各値を昇順や降順に並べたい場合は、#1のselect文にorder byを追加してください。
    • good
    • 0

unionを使うのが、一般的でしょう。



select
x.no
from
(select no1 as no from t1 where no1 is not null
union
select no2 as no from t1 where no2 is not null
union
select no3 as no from t1 where no3 is not null
) as x
group by x.no

>SQLでスマートなやり方はないでしょうか?

正規化を勉強して、テーブル設計をやり直しましょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!