0

重複の可能性:
SQLの「ゼロ除算」エラーを回避するにはどうすればよいですか?

SQLServerをゼロ除算エラーに関する問題があります。それぞれの行を削除するまで、このエラーとビューがブロックされることがあります。私を助けて、どうすればこれを回避できるかについてアドバイスをいただけますか?ありがとう。

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 に答える