重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

お世話になります。
SQLサーバ2000から、SQLサーバ2008への移行を行っております。

以下のようなSQL文は2000では許容されていたようで、問題なく(?)稼働していただのですが2008に移行したら軒並みエラーになってしまいました。

エラーで稼働確認が進まないので、修正方法を検討しているのですが、まだSQLサーバが使えない環境で確認ができません。
2000が来てから確認する予定ではありますが、以下の通りで新旧・同様のソート順になると考えて問題ございませんでしょうか。
教えていただけると幸甚です。

【例1】
SELECT DISTINCT ISNULL(T1.C1,""),T1.C2 FROM T1 ORDER BY T1.C1

→ORDER BY 項目を ISNULL(T1.C1,"")に変更

【例2】
SELECT DISTINCT T1.C1,T1.C2 FROM T1 ORDER BY T1.C1,T1.C3

→ORDER BY 項目から T1.C3 を削除する

以上です。宜しくお願いいたします。

A 回答 (1件)

【例2】はホントのSQL文ですか?selectする列とOrder Byの列が合ってません。




やはり実機で、シンプルな検証データ・テーブルで確認をしたほうが良いでしょう。

OracleだとOrder By をselectする列番号で指定できましたが、SQLServerはどうでしたっけ。

SELECT DISTINCT ISNULL(T1.C1,""),T1.C2 FROM T1 ORDER BY 1
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
やはり【例2】は不思議な感じですよね。。
SQLサーバー2008でも動きません。

SQLサーバ2008は使用できる環境はあるのですが、SQLサーバー2000が使用できる環境がまだ用意できていなく、2000と同様の動きになるように修正したいのですが確認できない状況です。

教えていただいた、SELECT DISTINCT ISNULL(T1.C1,""),T1.C2 FROM T1 ORDER BY 1 (列番号指定)はSQLサーバーでも使用可能です。
SQLサーバ2008でそのように修正して動かした場合、SQLサーバー2000にて【例1】で動かした場合と同様のソート順になるのかご教授いただければ、よろしくお願いいたします。

お礼日時:2012/08/26 21:23

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