1

私は MS Access を少し使ったことがありますが、SQL Server の専門家ではありません。そして今、私は困惑する違いを見つけました。(SQL Server 2008 を使用しています。)

SELECT でいくつかの計算を行っていますが、ある計算の結果を次の計算で使用したいと考えています。

Name と Price という 2 つのフィールドを持つ Products テーブルがあるとします。MS Access では、このクエリは正常に機能します。

  SELECT Name, Price * 2 AS DoublePrice, DoublePrice * 2 AS QuadPrice
  FROM Products

つまり、最初の計算の結果を次の計算に使用します。これにより、私が期待する結果が得られます-名前 + 価格の 2 倍 + 価格の 4 倍。

しかし、これは SQL Server ではコンパイルされません。2 番目の計算で「不明なフィールド: DoublePrice」エラーが発生します。

これを機能させる方法はありますか?つまり、後で同じ SELECT で (名前付きの) 計算を使用するには? 私はかなり大規模な計算をいくつか行い、他の計算でそれらの値を構築したいと考えています。そして、そのためだけに余分なビュー/サブSELECTを追加するのはばかげているように感じます...

助けてくれてありがとう!:-)

4

1 に答える 1

1

いいえ、直接ではありません。派生テーブル、CTE、CROSS APPLYまたは計算をもう一度使用するかのいずれかです。

-- derived table
SELECT *, DoublePrice * 2 AS QuadPrice
FROM (  SELECT Name, Price * 2 AS DoublePrice
        FROM Products) P

-- CTE
;WITH CTE AS
(
    SELECT Name, Price * 2 AS DoublePrice
    FROM Products
)
SELECT *, DoublePrice * 2 AS QuadPrice
FROM CTE

-- Just do the calculation again
SELECT Name, Price * 2 AS DoublePrice, (Price * 2) * 2 AS QuadPrice
FROM CTE

-- CROSS APPLY
SELECT *, 2 * DoublePrice AS QuadPrice
FROM Products P
CROSS APPLY (SELECT 2 * Price) AS T(DoublePrice)
于 2012-06-07T21:00:00.503 に答える