
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
-
SELECT INTOで一度に複数の変数へ代入をするにはどのようにすれがよいでしょうか?
PostgreSQL
-
Viewにインデックスは張れますか?
Oracle
-
-
4
GROUP BYを行った後に結合したい。
Oracle
-
5
【PL/SQL】FROM区に変数を使う方法
Oracle
-
6
テーブルに存在しない列をselect文で出力する事はできないでしょうか?
PostgreSQL
-
7
テーブルからのselectにおいてデータの有無により結果をわけたい
PostgreSQL
-
8
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
9
SQLで特定の項目の重複のみを排除した全項目を取得する方法
その他(プログラミング・Web制作)
-
10
SQL文のwhere条件文で使う <> の意味はなんですか
その他(データベース)
-
11
SELECTで1件のみ取得するには?
Oracle
-
12
String"から型'Double'への変換は無効です。 とエラーが出ます。
Visual Basic(VBA)
-
13
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
14
特定条件でWHERE句の条件を変更したい
SQL Server
-
15
SQLで部分的にGROUP BYしたいとき
Oracle
-
16
VB.NETで小数点以下の桁数を取得したい
その他(ソフトウェア)
-
17
group byの並び順を変えるだけで結果が異なる
Oracle
-
18
UNIONする際、片方テーブルしかないカラムも利用
MySQL
-
19
カーソル0件の時にエラーを発生させる
Oracle
-
20
CSVファイルの中で、「 , 」カンマを使いたい
その他(コンピューター・テクノロジー)
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数列フィールド値のクロス集計
-
FROM の中で CASE を使えるでし...
-
Accessフォームにクロス集計ク...
-
アクセスクエリ 締め日毎で絞...
-
Access2007 年度ごとの四半期...
-
MAX(都道府県名)
-
アクセスクエリの計算
-
ACCESSのクエリで集計で、先頭...
-
クロス集計の結果を元に戻す方法
-
Accessで年齢から年代ごとの集計
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
Accessでテーブル名やクエリ名...
-
テーブルの存在チェックについて
-
「直需」の意味を教えてください
-
ACCESSで400以上のフィールドが...
-
ExcelのデータをコピーでACCESS...
-
エクセルグラフの凡例スペース
-
SUBSTRING 関数に渡した長さの...
-
Accessファイルを作成者以外は...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSのクエリで集計で、先頭...
-
FROM の中で CASE を使えるでし...
-
複数列フィールド値のクロス集計
-
access 存在しない項目を”0件”...
-
アクセスクエリ 締め日毎で絞...
-
Accessで年齢から年代ごとの集計
-
桐の集計(集計行設定のこと)...
-
クロス集計の結果を元に戻す方法
-
Accessフォームにクロス集計ク...
-
AccessからExcelへエクスポート...
-
レポートウィザードの集計のオ...
-
SELECT文について
-
「警告 : NULL 値は集計または...
-
MS-Accessのクロス集計クエリと...
-
アクセス レポートのテキスト...
-
集計表の作り方
-
情報処理初心者です。SQLの GRO...
-
アクセス2003のsum([金額])で...
-
Accessで別テーブルの個数をユ...
-
ファイルメーカーからエクセル...
おすすめ情報