0

可能重复:
如何避免 SQL 中的“除以零”错误?

我有一个关于 Sql Server 除以零错误的问题。有时这个错误和它的视图会被阻止,直到我删除相应的行。你能帮我,给我一些建议,我怎么能避免这种情况?谢谢。

CREATE VIEW Acq
AS
SELECT
        ac_id
       ,[Company]
       ,No
       ,[ContractID]
       ,[Seller]
       ,[AcquistionDate]
       ,[Village]
       ,[Commune]
       ,[Area]
       ,[PlotArea]
       ,[FieldNo]
       ,[Topo1]
       ,[Topo2]
       ,[Topo3]
       ,[Topo4]
       ,[Topo5]
       ,[TotalAreaSqm]
       ,[OwnershipTitle]
       ,[CadastralNO]
       ,[Type]
       ,[Price]
       ,[NotaryCosts]
       ,[LandTax]
       ,[OtherTaxes]
       ,[AgentFee]
       ,[CadastralFee]
       ,[TabulationFee]
       ,[CertSarcini]
       ,[ProcuraNO]
       ,cast((isnull(price,0)+isnull(notarycosts,0)+isnull(landtax,0)+isnull(othertaxes,0)+isnull(agentfee,0)+isnull(cadastralfee,0)+isnull(tabulationfee,0)+isnull(certsarcini,0)) as decimal(12,4)) as TotalCosts
       ,cast((isnull(price,0)+isnull(notarycosts,0)+isnull(landtax,0)+isnull(othertaxes,0)+isnull(agentfee,0)+isnull(cadastralfee,0)+isnull(tabulationfee,0)+isnull(certsarcini,0))/(TotalAreaSqm/10000) as decimal(12,4)) as RonPerHa
       ,cast((isnull(price,0)+isnull(notarycosts,0)+isnull(landtax,0)+isnull(othertaxes,0)+isnull(agentfee,0)+isnull(cadastralfee,0)+isnull(tabulationfee,0)+isnull(certsarcini,0))/(TotalAreaSqm/10000*FixHist) as decimal(12,4)) as EurPerHa
       ,[DeclImpunere]
       ,[FixHist]
       ,cast((isnull(price,0)+isnull(notarycosts,0)+isnull(landtax,0)+isnull(othertaxes,0)+isnull(agentfee,0)+isnull(cadastralfee,0)+isnull(tabulationfee,0)+isnull(certsarcini,0))/FixHist as decimal(12,4)) as EurHist
       ,[LandStatus]


FROM      tblAcq
4

2 回答 2

4

将表达式替换(TotalAreaSqm/10000)(nullif(TotalAreaSqm,0)/10000)

这假设您希望结果是null除以零的情况。有关. _ _nullif

于 2012-12-06T10:48:01.023 回答
1
CASE (TotalAreaSQM/1000 <> 0) THEN 'do work' ELSE 'dont do it and pass the 0 or what ever'

您可以编写大量类似的东西。

于 2012-12-06T10:47:35.370 回答