2016-11-02 6 views
0

一般的にSQLサーバーとSQLに新しい、私はMSアクセス内のクエリで((unitprice * discount)* Quantityから 'total price'のフィールドを計算しましたSQL Serverで新しいフィールドを計算しようとしています

SELECT OrderDetails.ProductID, 
     OrderDetails.Quantity, 
     OrderDetails.Discount, 
     OrderDetails.UnitPrice AS **[Original Price]**, 
     [Original Price]-(UnitPrice*Discount)*Quantity AS [Total Cost] 
FROM OrderDetails; 

私はSQL Serverで太字で表示されているオリジナルの価格を強調しています。次のようにします。

誰でもお手伝いできますか?

SELECT od.roductID, 
     od.Quantity, 
     od.Discount, 
     od.UnitPrice AS OriginalPrice 
     od.UnitPrice - (od.UnitPrice*od.Discount)*od.Quantity AS Total_Cost 
FROM OrderDetails od 

あなたはOrderDetailsテーブルにエイリアスを与えればそれはとても冗長ではありません(odで:ちょうど@MarcBは、あなたは自分のSELECT文でカラム名を繰り返す必要があり、言っていたものを綴るする

+2

'select foo as bar、bar * baz'は不正なSQLです。いくつかのケースでは '' foo as bar ... where bar = ... 'などのようにすることができますが、フィールドリスト内では、以前のフィールドで定義されたエイリアスを使うことはできません。 –

+0

ブラケット正しく – Ben

答えて

1

この場合)。

+0

数式が複雑な場合。あなたはまた、新しい列を計算するためにクロス適用を使うことができ、その方法は前のものを参照してください –

+0

@JamesZそれを別の答えとして投稿してみませんか? –

+0

これは本当に必要ではない単純なケースのように聞こえました...そして、私は怠惰だと感じていました;) –

1

他の列の計算に別名を使用しないでください。

SELECT ProductID, Quantity,Discount, UnitPrice AS [Original Price], 
     UnitPrice-(UnitPrice*Discount)*Quantity AS [Total Cost] 
FROM OrderDetails 
関連する問題