![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
特定条件でWHERE句の条件を変更したい
SQL Server
-
【PL/SQL】FROM区に変数を使う方法
Oracle
-
SELECT INTOで一度に複数の変数へ代入をするにはどのようにすれがよいでしょうか?
PostgreSQL
-
-
4
SQL文で右から1文字だけ削除するやり方
MySQL
-
5
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
6
CASE文のエラーについて
Oracle
-
7
【SQL】他テーブルに含まれる値に合致する行を抽出
その他(データベース)
-
8
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
9
GROUP BYを行った後に結合したい。
Oracle
-
10
型 varchar から型 numeric への変換エラー。
その他(データベース)
-
11
SELECT 文 GROUP での1件目を取得
SQL Server
-
12
テーブルからのselectにおいてデータの有無により結果をわけたい
PostgreSQL
-
13
Chr(13)とChr(10)の違いは?
PowerPoint(パワーポイント)
-
14
カーソル0件の時にエラーを発生させる
Oracle
-
15
GROUP BYでエラーが発生
SQL Server
-
16
引数によってwhere句を切り替える方法
Oracle
-
17
データベースのINT型項目にNULLはNG?
MySQL
-
18
SQLServerでNULLを挿入したいです
SQL Server
-
19
SELECTの結果で同一行を複数回出力する
Oracle
-
20
単一グループのグループ関数ではありません。
Oracle
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSのクエリで集計で、先頭...
-
FROM の中で CASE を使えるでし...
-
「警告 : NULL 値は集計または...
-
アクセスクエリ 締め日毎で絞...
-
複数列フィールド値のクロス集計
-
絶対値ごとに集計したい
-
アンケート集計方法
-
SQL副問い合わせって?
-
アクセス レポートのテキスト...
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
Access テキスト型に対する指定...
-
「直需」の意味を教えてください
-
Accessでテーブル名やクエリ名...
-
Accessでテーブルの値をテキス...
-
必須入力項目と入力必須項目
-
Accessのフィールド数が255しか...
-
【Access】フォームで自動計算...
-
Accessでコードを入れると名前...
-
エクセルグラフの凡例スペース
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSのクエリで集計で、先頭...
-
アクセスクエリの計算
-
FROM の中で CASE を使えるでし...
-
AccessからExcelへエクスポート...
-
複数列フィールド値のクロス集計
-
Accessフォームにクロス集計ク...
-
access 存在しない項目を”0件”...
-
VBA 得意先ごと且つ日付ごとに...
-
accessクロス集計で前月21日~...
-
「警告 : NULL 値は集計または...
-
クロス集計の結果を元に戻す方法
-
Accessで年齢から年代ごとの集計
-
MS-Accessのクロス集計クエリと...
-
桐の集計(集計行設定のこと)...
-
アクセスクエリ 締め日毎で絞...
-
アクセス レポートのテキスト...
-
Accessで別テーブルの個数をユ...
-
クロス集計での order by句の使...
-
クエリを使って縦に一行ずつ足...
-
絶対値ごとに集計したい
おすすめ情報