这是我的情况:
在我的表中,我有两个字段:
- Price (decimal (15,4)
- TaxId (int)
TaxId
value 没有存储在任何地方,但只有两个值(实际上是 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 设为十进制(15,4)。我该如何设置?
最佳答案
是的,谷歌如何在 SQL Server 中创建 View ,并在 View 的 SELECT 语句中将 Price 列与 TaxId 列相乘。由于您必须考虑 NULL 值,您应该使用 COALESCE
像这样
SELECT
Price * (1 + COALESCE(TaxId/100), 0) AS newValue
...
假设您的列中只有“8.5”而不是“8.5%”。是不是varchar?
附注:
COALESCE()
返回第一个非空值更新 问题编辑后:
你只需要稍微修改你的语法
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...
关于SQL Server 使用条件在 VIEW 中添加计算列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10912127/