7

これが私の状況です:

私のテーブルには2つのフィールドがあります:

- Price (decimal (15,4)
- TaxId (int)

TaxId値はどこにも格納されていませんが、値は 2 つ (実際には 3 つ) しかありません。

- 1 (8.5%)
- 2 (20%)
- NULL (no tax)

ここで、税込みの新しい価格を計算する計算列がビューに必要です。

何か案が?

私は次のようなもので行きました:

SELECT...
CASE TaxId
   WHEN 1 THEN Price *1.085 AS test
   WHEN 2 THEN Price *1.2 AS test
   WHEN NULL THEN Price  AS test END
FROM...

アップデート:

クエリを正常に実行できました。

CASE dbo.Table.TaxId WHEN 1 THEN dbo.Table.Price*1.085 WHEN 2 THEN dbo.Table.Price*1.2 ELSE dbo.Table.Price END AS CalcualtedPrice

ここで必要なのは、CalculatedPrice を 10 進数 (15,4) にすることだけです。どうすればそれを設定できますか?

4

2 に答える 2

6

はい、SQL Server でビューを作成する方法を Google で検索し、ビューの SELECT ステートメントで Price 列に TaxId 列を掛けます。NULL 値を考慮する必要があるためCOALESCE、このように使用する必要があります

SELECT
Price * (1 + COALESCE(TaxId/100), 0) AS newValue
...

列に「8.5%」ではなく「8.5」しかないと仮定します。それはvarcharかどうか?

PS:COALESCE()最初の null 以外の値を返します

質問が編集された後の更新:

構文を少し変更するだけです

SELECT 
CAST(
CASE 
   WHEN TaxId = 1 THEN Price *1.085
   WHEN TaxId = 2 THEN Price *1.2
   WHEN TaxId IS NULL THEN Price END AS decimal(15,4)
) AS CalculatedPrice
FROM...
于 2012-06-06T10:29:13.397 に答える