http://msdn.microsoft.com/ja-jp/library/ms181765 …
…などを見ますと、どうもできそうに無いと思いますが、質問させて頂きます。
例えば、
SELECT *
FROM (CASE WHEN @FLG=0 THEN t当月集計 ELSE t累積集計 END) AS t請求残
…のように、FROMの中でCASEが使えると便利なときがあります。
エラーが出ますが、このような書き方はできないのでしょうか。
No.2ベストアンサー
- 回答日時:
CASE式でテーブルを切り替えることのできるDBMSはないと思います。
そのためにOracleでもSQL Serverでも苦労して動的クエリを書くのです。
SET @sql='SELECT * FROM '+CASE WHEN @FLG=0 THEN 't当月集計' ELSE 't累積集計' END+' AS t請求残'
EXEC (@sql)
No.1
- 回答日時:
わざわざ性能が出しにくかったり、分かりにくいSQLにしたいのでしょうか?
RDBMSは、ここのカテゴリ通りSQL Serverですか?
バージョンは?
SQL Serverであれば、T-SQLのIF文で制御すればいいのでは?
<例1>
declare @flag int;
set @flag=1;
if @flag=1
select * from t1
else
if @flag=2
select * from t2
;
また、SQL Server以外といったことがあるなら、unionを使うといった方法もあります。
<例2>
declare @flag int;
set @flag=1;
select *
from t1
where @flag=1
union
select *
from t2
where @flag=2
;
この回答への補足
>わざわざ性能が出しにくかったり、分かりにくいSQLにしたいのでしょうか?
もちろん、そんなことはありません。
また、例にあげていただいている二つの書き方があることは、勿論存じております。そこを、敢えて質問なので御座居ます。例ではSELECT * ですが、列を列挙しているような場合、スクリプトの量では2倍程度になってしまいますよね。
RDBMSは、ここのカテゴリ通りSQL Serverです。
バージョンは、2000,2005,2008を考えています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
あるあるbotに投稿したけど採用されなかったあるある募集
あるあるbotに投稿したけど採用されなかったあるあるをこちらに投稿してください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
【PL/SQL】FROM区に変数を使う方法
Oracle
-
SELECT 文 GROUP での1件目を取得
SQL Server
-
SELECT INTOで一度に複数の変数へ代入をするにはどのようにすれがよいでしょうか?
PostgreSQL
-
-
4
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
5
CASE文のエラーについて
Oracle
-
6
PL/SQLカーソルの2重FORループができません
Oracle
-
7
SQLで特定の項目の重複のみを排除した全項目を取得する方法
その他(プログラミング・Web制作)
-
8
型 varchar から型 numeric への変換エラー。
その他(データベース)
-
9
DataGridViewの特定列に入力されている重複チェックをしたい
Visual Basic(VBA)
-
10
SELECTの結果で同一行を複数回出力する
Oracle
-
11
カーソルを使って、最終行レコードの判断はどうすればよいのでしょうか。
SQL Server
-
12
CloseとDisposeの違い
Visual Basic(VBA)
-
13
Chr(13)とChr(10)の違いは?
PowerPoint(パワーポイント)
-
14
select文の実行結果に空白行を入れたい
MySQL
-
15
カーソル定義での条件分岐
Oracle
-
16
GROUP BYでエラーが発生
SQL Server
-
17
html でのテキスト結合について
その他(プログラミング・Web制作)
-
18
Unionした最後にGROUP BYを追加する 又はそれにかわるような方法はありますか?
MySQL
-
19
テキストボックスのvalueとtextの違い
Visual Basic(VBA)
-
20
複数のテーブルから同じ条件で検索したい。
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSのクエリで集計で、先頭...
-
AccessからExcelへエクスポート...
-
FROM の中で CASE を使えるでし...
-
access 存在しない項目を”0件”...
-
Access 抽出データ件数のカウン...
-
複数列フィールド値のクロス集計
-
Accessフォームにクロス集計ク...
-
MS-Accessのクロス集計クエリと...
-
クロス集計の結果を元に戻す方法
-
情報処理初心者です。SQLの GRO...
-
アクセス2000 チェックボック...
-
桐の集計(集計行設定のこと)...
-
「警告 : NULL 値は集計または...
-
教えてグーのランキング?につ...
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
エクセルグラフの凡例スペース
-
変数が選択リストにありません
-
テーブルの存在チェックについて
-
Accessでテーブル名やクエリ名...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSのクエリで集計で、先頭...
-
FROM の中で CASE を使えるでし...
-
複数列フィールド値のクロス集計
-
AccessからExcelへエクスポート...
-
Accessフォームにクロス集計ク...
-
クロス集計の結果を元に戻す方法
-
access 存在しない項目を”0件”...
-
桐の集計(集計行設定のこと)...
-
accessクロス集計で前月21日~...
-
アクセスクエリ 締め日毎で絞...
-
MS-Accessのクロス集計クエリと...
-
ファイルメーカーでピボットテ...
-
Accessで年齢から年代ごとの集計
-
ファイルメーカーからエクセル...
-
項目ごとに最大値の行を表示したい
-
VBA 得意先ごと且つ日付ごとに...
-
アクセス レポートのテキスト...
-
Access 抽出データ件数のカウン...
-
クロス集計での order by句の使...
-
ACCESS レポートでページごとに...
おすすめ情報