
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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Rでのスクリプトのご相談 3 2022/12/08 16:22
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) select caseの入れ子 3 2023/03/08 18:48
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- C言語・C++・C# C++のcase文の書き方 4 2023/02/24 20:50
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
このQ&Aを見た人はこんなQ&Aも見ています
-
CASE文のエラーについて
Oracle
-
【PL/SQL】FROM区に変数を使う方法
Oracle
-
Viewにインデックスは張れますか?
Oracle
-
-
4
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
5
SQLで特定の項目の重複のみを排除した全項目を取得する方法
その他(プログラミング・Web制作)
-
6
GROUP BYを行った後に結合したい。
Oracle
-
7
単一グループのグループ関数ではありません。
Oracle
-
8
3つ以上のテーブルをUNIONするのは現時的でないでしょうか?
MySQL
-
9
SQL文のwhere条件文で使う <> の意味はなんですか
その他(データベース)
-
10
SELECTで1件のみ取得するには?
Oracle
-
11
テーブルに存在しない列をselect文で出力する事はできないでしょうか?
PostgreSQL
-
12
SELECT INTOで一度に複数の変数へ代入をするにはどのようにすれがよいでしょうか?
PostgreSQL
-
13
列のヘッダーを含めるのをデフォルトにする。
SQL Server
-
14
テーブルからのselectにおいてデータの有無により結果をわけたい
PostgreSQL
-
15
UNIONする際、片方テーブルしかないカラムも利用
MySQL
-
16
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
17
IFで条件を分岐させてのINSERT(ストアド)。
SQL Server
-
18
SELECT 文 GROUP での1件目を取得
SQL Server
-
19
列名に変数を使うことはできないのでしょうか?
SQL Server
-
20
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MAX(都道府県名)
-
複数列フィールド値のクロス集計
-
クロス集計の結果を元に戻す方法
-
FROM の中で CASE を使えるでし...
-
access 存在しない項目を”0件”...
-
桐の集計(集計行設定のこと)...
-
ACCESSのレポートに売上の累計...
-
アクセス レポートのテキスト...
-
アクセス2003のsum([金額])で...
-
ACCESSのクエリで集計で、先頭...
-
【マクロ】列を折りたたみ非表...
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
エクセルVBAで5行目からオート...
-
エクセルグラフの凡例スペース
-
Accessでテーブル名やクエリ名...
-
『iPod nano』英語→日本語に直...
-
Accessでコードを入れると名前...
-
エクセルマクロにて最終行まで...
-
列が存在しないと言われる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FROM の中で CASE を使えるでし...
-
ACCESSのクエリで集計で、先頭...
-
複数列フィールド値のクロス集計
-
AccessからExcelへエクスポート...
-
access 存在しない項目を”0件”...
-
桐の集計(集計行設定のこと)...
-
「警告 : NULL 値は集計または...
-
クロス集計の結果を元に戻す方法
-
アクセスクエリ 締め日毎で絞...
-
Accessフォームにクロス集計ク...
-
アクセス レポートのテキスト...
-
accessクロス集計で前月21日~...
-
SQLserver 型違いの日付の比較...
-
ファイルメーカーでピボットテ...
-
VBA 得意先ごと且つ日付ごとに...
-
Accessで年齢から年代ごとの集計
-
クロス集計での order by句の使...
-
アクセス2003のsum([金額])で...
-
Accessで別テーブルの個数をユ...
-
SQLのクエリの書き方を教えて下...
おすすめ情報