こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SQL文「DISTINCT」の「ORDER BY」について

SQL文「DISTINCT」の「ORDER BY」について教えて下さい。

A列をDISTINCTで重複行の排除をしています。
その後、B列でORDER BYをかけたいのですが、エラーが
出てしまいます。A列でのORDER BYは成功します。
何か良い方法があれば教えて下さい。
よろしくお願いします。

SQL="SELECT DISTINCT A列 from table " &_
"WHERE (table.C列='100') " &_
"ORDER BY (table.B列) ASC " ⇒エラー
  
"ORDER BY (table.A列) ASC " ⇒成功

投稿日時 - 2007-03-13 11:38:28

QNo.2828848

すぐに回答ほしいです

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

GROUP BY を使えばいいと思います。

SELECT A, Min(B) AS minB, C
FROM table1
WHERE C=100
GROUP BY A, C
ORDER BY Min(B);

Min とか Max とかで、B列のデータの扱いを決める必要があります。

投稿日時 - 2007-03-13 13:43:27

お礼

うまくいきました!!
ありがとうございました!!

投稿日時 - 2007-03-13 14:38:48

ANo.3

このQ&Aは役に立ちましたか?

10人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(3)

ID__A_____B_____C
1___aaa___aaa__100
2___aaa___ccc__100
3___bbb___bbb__100

SELECT DISTINCT A from table1 WHERE C='100' ORDER BY B ASC;

SELECT DISTINCT が指定されている場合、選択リストに ORDER BY 項目が必要です。
Err number = -2147217900

ですから、

SELECT DISTINCT A, B from table1 WHERE C='100' ORDER BY B ASC;

|A__|B__|

---|--------
|aaa|aaa|

|bbb|bbb|
|aaa|ccc|


という結果を得れます。

投稿日時 - 2007-03-13 12:44:57

補足

アドバイスありがとうございます。
エラーは出ずに、ソートはうまくいったのですが、DISTINCTがかかりません。
どうしたらよろしいでしょうか??

ID__A_____B_____C
1___aaa___aaa__100
2___aaa___ccc__100
3___bbb___bbb__100

以下のように抽出したい
1___aaa___aaa__100
3___bbb___bbb__100

投稿日時 - 2007-03-13 13:11:09

ANo.1

エラーとなる原因は、次のような場合ではないでしょうか?
間違っていたらごめんなさい。

A列 B列 C列
aaa aaa 100
aaa ccc 100
bbb bbb 100

投稿日時 - 2007-03-13 12:07:12

補足

下記のようなデータで、
A列 B列 C列
aaa aaa 100
aaa bbb 100
aaa ccc 100
bbb ddd 100

以下のように出したいです。
A列 B列 C列
aaa aaa 100 or aaa bbb 100 or aaa ccc 100・・・3つのうち何れかが抽出される
bbb ddd 100

投稿日時 - 2007-03-13 13:18:06

-広告-
-広告-
-広告-
-広告-