/*(;´д`) SQLの質問…。

SQL文でDESCをつけたりつかなかったり動的にできないっすかね?
Order Byを条件によって変えようとしてるのだけど、Descがっどうにもならんす…。
文字列の合成でSQLつくってとか、カーソルつくってとかでやれば出来るよ!ってのは、
まぁおいておいて、パラメータわたしのSQL一発で出来る方法あったらお知恵をお授けくださいませ。*/
→こんな感じのでDesc
http://d.hatena.ne.jp/kuippa/searchdiary?word=%2a%5bSQL%a4%cf%a4%c6%a4%ca%5d

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/12/13 19:39:22
  • 終了:--

回答(2件)

id:kacchan6 No.1

kacchan6回答回数106ベストアンサー獲得回数02004/12/13 22:32:39

ポイント20pt

http://d.hatena.ne.jp/kuippa/searchdiary?word=%2a%5bSQL%a4%cf%a4...

[SQLはてな] - 紅茶屋くいっぱのあれこれ日記

一番無難というか、一番多く使われていて一般的な方法ですが、

declare @SQL as varchar(1000)

set @SQL = ’

selec

*

from

tbl

order by ’ +

@col_name + ’ ’ + @sotr1 + ’,’ +

....

exec(@SQL)

ってな感じです。

業務系システムで、テーブル名が動的に変わったり、

ちょっと小難しいクエリを動的に作りたいときに使います。

ちなみにSQLServerですよね。多分。。。

id:kuippa

プロシジャーの中だったのでSQLを切り貼りするのがなんかやだなぁと思って聞いてみてました。

ちなみにSQL鯖です。別にOracleならこんなやり方があるってんでもかまわんとですよ。

↓なんか貼り付けられなかったSQL

drop table test_table

CREATE TABLE test_table (col1 varchar(2) ,col2 varchar(4) )

go

insert into test_table values (’1’,’11’)

insert into test_table values (’2’,’22’)

insert into test_table values (’3’,’33’)

declare @vpara varchar(1)

set @vpara = ’0’

select col1,col2 from test_table

order by case @vpara when ’1’ then col1 else col2 end

desc --←このDesc

go

2004/12/14 00:39:12
id:ohmix1 No.2

ohmix1回答回数235ベストアンサー獲得回数142004/12/14 15:06:56

ポイント30pt

http://www.hatena.ne.jp/1102934362##

人力検索はてな - /*(;´д`) SQLの質問…。 SQL文でDESCをつけたりつかなかったり動的にできないっすかね? Order Byを条件によって変えようとしてるのだけど、Descがっどうにもならんす…..

個人的にはSQL文を書き換えるべきと思いますが、どうしてもというなら次のようなSQLを思いつきました。

手近にOracleしかないのですが、SQL-Serverでもできますよね?

SELECT * FROM TEST ORDER BY ABS(NO-?) ASC

NOはソートキーとなる数字列とします。

・?に0を指定すれば昇順、

・?に最大値(例えば99999)を指定すれば降順

となります。

このままだと数値列しかソートに使えないので、文字列の場合はこのような文字列の変換処理を行うFUNCTIONを作ればOKです。

id:kuippa

パラメータ渡されてするのが、文字列の切り貼りじゃ寂しいなぁと…。もしかしたらなんか他に方法があるのかいな。と思って聞いてみました。

…。

ん。

あぁなるほど。カラム名の代わりにカラム番号で指定してるのかと思ったけど…

SELECT

col1,

ABS(col1 - ????) as col2

FROM TEST ORDER BY col2

?を動的に0か、99999なりにしてやるってことですね。組み合わせればたしかに書けそう…。

だけど、本末転倒コースな気配。ID系のオーダーならこぉいうので関数作っとくといいかもしれないっすね。

会心の一撃を切り株に座りながら待ちぼうけ〜

(* ´¬`) ぼー…

2004/12/14 16:01:18

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません