我正在尝试从商品的总价格中创建一个折扣,这一切都有效但是当我到达折扣后#39;我收到以下错误'无法将char值转换为money。 char值的语法不正确。'
select ma.materialname,
mi.LeadTime,
su.SuppliersName,
'Discount' = CASE WHEN mi.price > 40.000 then (mi.Price / 100) * 10 END,
mi.Price as 'Before Discount',
'After Discount' = Case when 'discount' IS not null then (mi.Price - 'discount') END
from MaterialItem mi
inner join Material ma on mi.MaterialItemID = ma.MaterialID
inner join SupplierDetails sd on mi.SupplierID = sd.SuppliersID
inner join Suppliers su on sd.SuppliersID = su.SuppliersID
我试图减去'折扣' mi.price列中的列,任何帮助将不胜感激
修改
折扣和折扣后不是我的表格中的列,我会动态创建这些列来计算原始价格的折扣
答案 0 :(得分:2)
您的查询存在一些问题:
首先,您在别名周围使用单引号,这些引号被解释为字符串而不是列名称。
其次,您在CASE
语句中引用别名,您不能这样做。如果您想在CASE
中引用列别名,则需要再次使用该公式或将查询置于与此类似的另一个SELECT
内:
select materialname,
LeadTime,
SuppliersName,
Discount,
BeforeDiscount,
Case when discount IS not null then (BeforeDiscount - discount) END AfterDiscount
from
(
select ma.materialname,
mi.LeadTime,
su.SuppliersName,
CASE WHEN mi.price > 40.000 then (mi.Price / 100) * 10 END as Discount,
mi.Price as BeforeDiscount
from MaterialItem mi
inner join Material ma
on mi.MaterialItemID = ma.MaterialID
inner join SupplierDetails sd
on mi.SupplierID = sd.SuppliersID
inner join Suppliers su
on sd.SuppliersID = su.SuppliersID
) src