• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLで式で作った項目を別の式で再利用)

SQLの式の再利用方法についての疑問

このQ&Aのポイント
  • SQLで定義した項目を別の式で再利用したい場合、Microsoft Accessでは可能ですが、SQL Serverではエラーになります。その場で再度書く方法もありますが、釈然としません。
  • SQL Serverで式を再利用する記述を行うとエラーが発生します。この問題を解決する方法を探しています。現状では、式をその場で再度書く方法がありますが、他に良い解決策が知りたいです。
  • AccessではSQLで作成した項目を再利用できますが、SQL Serverでは同様に行うとエラーになります。式を再度書けば回避できますが、このような状況での最良の方法を知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (766/5720)
回答No.3

WITHを使った方がすっきりするかも。 ---- WITH TB AS ( SELECT TB1.Item1, (TB1.Item2 * 2) AS Item2x, (TB1.Item3 * 3) AS Item3x FROM TB1 ) SELECT Item1, Item2x, Item3x, (Item2x + Item3x) AS Item4 FROM TB; ----

webuser
質問者

お礼

ありがとうございます。 WITHは使った事が無かったけど、From句で括弧の中に書くよりもスッキリしますね。

Powered by GRATICA

その他の回答 (2)

  • dell_OK
  • ベストアンサー率13% (766/5720)
回答No.2

そうですね。 私は間違えたり修正が大変になるので同じ式を何度も書きたくない時はこんな風にしています。 ---- SELECT Item1, Item2x, Item3x, (Item2x + Item3x) AS Item4 FROM ( SELECT TB1.Item1, (TB1.Item2 * 2) AS Item2x, (TB1.Item3 * 3) AS Item3x FROM TB1 ) AS TB; ----

webuser
質問者

お礼

ありがとうございます。 それもアリですね。 そのやり方はたまに使います。

Powered by GRATICA
webuser
質問者

補足

単純で単発であればコレでやります SELECT TB1.Item1 , (TB1.Item2 * 2) as Item2x , (TB1.Item3 * 3) as Item3x , ((TB1.Item2 * 2) + (TB1.Item3 * 3)) as Item4 FROM TB1 ; 複雑で単発であればコレでやります SELECT Item1, Item2x, Item3x, (Item2x + Item3x) AS Item4 FROM ( SELECT TB1.Item1, (TB1.Item2 * 2) AS Item2x, (TB1.Item3 * 3) AS Item3x FROM TB1 ) AS TB; もっと複雑であったり、再登場の可能性があれば、一旦、Viewを作ります。 でも、Accessみたいにその場で使えたら便利だな、なんかもっといい方法ないのかな、なんて思ったので質問してみました。

  • iijijii
  • ベストアンサー率55% (576/1038)
回答No.1

標準SQLでは出来ません。 SQL ServerなどのDBMSはデータストアと抽出に特化しています。 表示するためのデータ加工には不向きです。 表示するためのデータ加工はDBMSで行わず、フロントエンドで行うのが筋です。 フロントエンドとデータストアを兼ねたAccessは表示するためのデータ加工もSQLで出来るように、SQLに標準外の機能を追加しているのでしょう。 2倍、3倍した数値が表示するための一時的なデータ加工じゃないならViewを作っておくと良いです。

webuser
質問者

お礼

ありがとうございます。 標準SQLではできないですよね。

Powered by GRATICA

関連するQ&A