[英]How do I get over a SQL Server error MSG 8134 Divide by zero error encountered Error in my query?
我試圖計算2列之間的百分比變化,並得到除以零的錯誤,遇到錯誤。 我想將所有Null顯示為0,但是如果使用ISNULL,則會出現此錯誤。 我該如何克服?
SELECT
Table2014.OrderDate AS [December2014OrderDate],
ISNULL(Table2014.Total, 0) AS [December2014DailySales],
ISNULL(Table2013.Total, 0) AS [December2013DailySales],
ISNULL(Table2014.Total, 0) - ISNULL(Table2013.Total, 0) AS [DailySalesDifference],
100.0 * (ISNULL(Table2014.Total, 0) - ISNULL(Table2013.Total, 0)) / ISNULL(Table2013.Total, 0) AS [SalesDifferencePercentage],
ISNULL(Table2013.OrderCount, 0) AS [December2013DailyOrderCount],
ISNULL(Table2014.OrderCount, 0) AS [December2014DailyOrderCount],
ISNULL(Table2014.OrderCount, 0) - ISNULL(Table2013.OrderCount, 0) AS [DailyOrderCountDifference]
FROM
(SELECT
SUM(order_header_total.oht_net) AS Total,
DATEADD(DAY, 0, DATEDIFF(D, 0, order_header.oh_datetime)) AS OrderDate,
COUNT(order_header.oh_id) AS OrderCount
FROM
dbo.order_header_total
INNER JOIN
dbo.order_header ON order_header_total.oht_oh_id = order_header.oh_id
WHERE
order_header.oh_datetime BETWEEN '12/01/2014 00:00:00' AND '12/31/2014 23:59:59'
AND order_header.oh_os_id IN (1, 6, 4)
AND order_header.oh_cd_id = 76
GROUP BY
DATEADD(DAY, 0, DATEDIFF(D, 0, order_header.oh_datetime))) Table2014
LEFT OUTER JOIN
(SELECT
SUM(order_header_total.oht_net) AS Total,
DATEADD(YEAR, 1, DATEADD(DAY, 0, DATEDIFF(D, 0, order_header.oh_datetime))) AS OrderDate,
COUNT(order_header.oh_id) AS OrderCount
FROM
dbo.order_header_total
INNER JOIN
dbo.order_header ON order_header_total.oht_oh_id = order_header.oh_id
WHERE
order_header.oh_datetime BETWEEN '12/01/2013 00:00:00' AND '12/31/2013 23:59:59'
AND order_header.oh_os_id IN (1, 6, 4)
AND order_header.oh_cd_id = 76
GROUP BY
DATEADD(YEAR, 1, DATEADD(DAY, 0, DATEDIFF(D, 0, order_header.oh_datetime)))) Table2013 ON Table2013.OrderDate = Table2014.OrderDate
ORDER BY
Table2014.OrderD
而不是Denominator
的Isnull
,請使用NULLIF
處理除零錯誤。
select ...
100.0*Isnull((ISNULL(Table2014.Total,0) - ISNULL(Table2013.Total, 0)) /
NULLIF(Table2013.Total, 0) AS [SalesDifferencePercentage],0),
.....
NullIF
有助於將denominator
中的Null
替換為0
,這將避免上述錯誤
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.