1

次のようなクエリを使用しています。

SELECT C1, C1+C2,C (C1+C2)*C3 FROM T1 WHERE C2='XX'

ここで、2 番目の列の式は C1+C2 であり、3 番目の列は 2 番目に C3 を掛けたものです。だから、私が知りたいのは、このようなことが可能かどうかです:

SELECT C1,C1+C2 AS NEWC, NEWC*C3 FROM T1 WHERE C2='XX'

このクエリは些細なことのように見えますが、実際には、前の列で既に述べた式を繰り返すためにクエリが無意味に長くなるため、方法があればそれを使用したい巨大な 4 行のクエリがあります。

4

1 に答える 1

5

サブクエリを使用して、重複するコードを削除できます。

SELECT C1, NEWC, NEWC*C3
  FROM (SELECT C1, C1+C2 NEWC, C3 
          FROM T1 
         WHERE C2='XX')

場合によっては、サブクエリをWITH句に移動することで読みやすさを向上させることができます。

WITH intermediate_result AS (
   SELECT C1, C1+C2 NEWC, C3 
     FROM T1 
    WHERE C2='XX'
)
SELECT C1, NEWC, NEWC*C3 
  FROM intermediate_result
于 2012-07-18T07:46:57.203 に答える