
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も見ています
-
CASE文のエラーについて
Oracle
-
Viewにインデックスは張れますか?
Oracle
-
【PL/SQL】FROM区に変数を使う方法
Oracle
-
-
4
テーブルからのselectにおいてデータの有無により結果をわけたい
PostgreSQL
-
5
SQLで特定の項目の重複のみを排除した全項目を取得する方法
その他(プログラミング・Web制作)
-
6
GROUP BYを行った後に結合したい。
Oracle
-
7
SELECTで1件のみ取得するには?
Oracle
-
8
SELECT INTOで一度に複数の変数へ代入をするにはどのようにすれがよいでしょうか?
PostgreSQL
-
9
テーブルに存在しない列をselect文で出力する事はできないでしょうか?
PostgreSQL
-
10
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
11
SQL文のwhere条件文で使う <> の意味はなんですか
その他(データベース)
-
12
単一グループのグループ関数ではありません。
Oracle
-
13
String"から型'Double'への変換は無効です。 とエラーが出ます。
Visual Basic(VBA)
-
14
Flexgridで選択行の列の値を取得したい
Visual Basic(VBA)
-
15
3つ以上のテーブルをUNIONするのは現時的でないでしょうか?
MySQL
-
16
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
17
UNIONする際、片方テーブルしかないカラムも利用
MySQL
-
18
Oracleで「文字が無効です」のエラーが出ます
Oracle
-
19
SQLで部分的にGROUP BYしたいとき
Oracle
-
20
特定条件でWHERE句の条件を変更したい
SQL Server
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
AccessからExcelへエクスポート...
-
Accessで年齢から年代ごとの集計
-
FROM の中で CASE を使えるでし...
-
MS-Accessのクロス集計クエリと...
-
クエリで最新データを表示したい!
-
「警告 : NULL 値は集計または...
-
Excel 2019 のピボットテーブル...
-
ワードで4段組みで文章を書い...
-
「直需」の意味を教えてください
-
エクセルVBAで5行目からオート...
-
Accessでテーブル名やクエリ名...
-
テーブルの存在チェックについて
-
ファイルメーカーでCountifの様...
-
【マクロ】列を折りたたみ非表...
-
日本語のテーブル名、カラム名...
-
フォームで検索 エラーの表示...
-
Oracle 2つのDate型の値の差を...
-
Accessクエリーで両方のテーブ...
-
Accessクエリでの、LIKE条件
-
エクセルグラフの凡例スペース
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FROM の中で CASE を使えるでし...
-
ACCESSのクエリで集計で、先頭...
-
桐の集計(集計行設定のこと)...
-
複数列フィールド値のクロス集計
-
Accessフォームにクロス集計ク...
-
アクセス レポートのテキスト...
-
「警告 : NULL 値は集計または...
-
アクセスクエリ 締め日毎で絞...
-
access 存在しない項目を”0件”...
-
AccessからExcelへエクスポート...
-
VBA 得意先ごと且つ日付ごとに...
-
Accessでの集計用クエリの作成
-
クロス集計クエリについて
-
クエリで最新データを表示したい!
-
ファイルメーカーからエクセル...
-
項目ごとに最大値の行を表示したい
-
クロス集計の結果を元に戻す方法
-
MS-Accessのクロス集計クエリと...
-
絶対値ごとに集計したい
-
ファイルメーカーに詳しい方教...
おすすめ情報