[解決済み] 条件付きSQL和
2023-04-08 05:12:59
質問
私は現在、各トランザクションID(一意である)の合計現金を取得するために、次の行を追加する大規模なSQLステートメントを持っています。
select sum(cash) from Table a where a.branch = p.branch
and a.transID = p.transID) TotalCash
で、同じことをする必要があるのですが、先月中に評価された現金の値だけを合計する必要があるので、次のようなものになります。
select sum(CASE ValueDate WHEN > @startMonthDate THEN cash ELSE NULL END)
from Table a where a.branch = p.branch and a.transID = p.transID) TotalMonthCash
私は全体の文を持っていないことを申し訳ありませんが、それは本当に長く、ストアドプロシージャのコンテキストに固有のものですが、誰かが私が何を意味するのか知っているだろうと思っていたのですか?
どのように解決するのですか?
代わりにこれを試してみてください。
SUM(CASE WHEN ValueDate > @startMonthDate THEN cash ELSE 0 END)
説明
CASE 式の構文が正しくありません。単純な CASE 式の構文と検索された CASE 式の構文を混同しているようです。以下を参照してください。 のドキュメントを参照してください。 :
CASE式には2つの形式があります。
- 単純なCASE式は、式を単純な式の集合と比較し、結果を決定します。
- 検索されたCASE式は、結果を決定するためにブール式の集合を評価する。
検索されたCASE式の構文が欲しい。
CASE
WHEN Boolean_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ]
END
余談ですが、パフォーマンスが問題であれば、従属サブクエリを使用する代わりに、JOINとGROUP BYを使用して書き直すと、この式がより速く実行されることが分かるかもしれません。
関連
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] SQLテーブルで重複する値を検索する
-
[解決済み] INNER JOINよりもCROSS APPLYを使用すべきなのはどのような場合ですか?
-
[解決済み] mysqldumpで特定のテーブルをスキップする
-
[解決済み] SQLite - UPSERT *not* INSERT or REPLACE
-
[解決済み] T-SQL文の接頭辞Nの意味と使うべきタイミングは?
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
-
[解決済み] SQL ServerでINNER JOINを使用して削除するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[エラー処理] [MySQL] [Err] 1241 - オペランドは 1 つのカラムを含む必要があります。
-
SQLラーニングノート--オペランドには1つのカラムが必要です。
-
executeQuery()ソリューションでデータ操作文を発行できない。
-
[解決済み] ...値に挿入する ( SELECT ... FROM ... )
-
[解決済み] Oracleの全テーブルのリストを取得しますか?
-
[解決済み] SQLの複数列の順序付け
-
[解決済み] SQL Server の VARCHAR/NVARCHAR 文字列に改行を挿入する方法
-
[解決済み] フラットテーブルをツリーにパースする最も効率的/エレガントな方法は何ですか?
-
[解決済み] SQL ServerでINSERT INTOとしてデータをエクスポートする
-
[解決済み] SQLサーバーで行を列に効率的に変換する