嗨我想根据第3列中的内容计算2列值。根据第3列值计算2列
下面的错误代码将数据类型varchar转换为数字时出错。
我相信它试图将货币列设置为新值而不是测试。
任何人都可以帮助我的语法。
谢谢。
SELECT dbo.ORDR.DocTotal,
dbo.ORDR.DocTotalFC,
test = case
when dbo.RDR1.Currency = 'GBP' then dbo.ORDR.DocTotal - dbo.ORDR.VatSum
when dbo.RDR1.Currency = 'USD' then dbo.ORDR.DocTotalFC - dbo.ORDR.VatSumFC
when dbo.RDR1.Currency = 'EUR' then dbo.ORDR.DocTotalFC - dbo.ORDR.VatSumFC
else 'other'
end
FROM dbo.RDR1 INNER JOIN
dbo.ORDR ON dbo.RDR1.DocEntry = dbo.ORDR.DocEntry
你有样品数据和所需的输出? – Tanner
在猜测,我会说'DocTotal'或'VatSum'不是数字数据类型,因此在子句中的减法失败....但你需要向我们展示模式和数据,否则我们'重新猜测。 – Tanner
您不能随意决定将此列中的值设置为varchar,而对于其他行,则为varchar。您必须为所有行中的给定列使用单一数据类型。你的情况表达式正在做数学或返回一个字符串文字。您需要在那里返回NULL或强制您的计算值为varchar。 –