人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

/*(;´д`) 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

●質問者: くいっぱ
●カテゴリ:コンピュータ
✍キーワード:SQL カーソル パラメータ 文字列
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kacchan6
●20ポイント

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ですよね。多分。。。

◎質問者からの返答

プロシジャーの中だったので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


2 ● ohmix1
●30ポイント

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です。

◎質問者からの返答

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

…。

ん。

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

SELECT

col1,

ABS(col1 - ????) as col2

FROM TEST ORDER BY col2

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

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

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

(* ´¬`) ぼー…

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ