値を0にするケースを追加した後でも、クエリでゼロ除算エラーが発生しています。私はそれがa.grosspcsが月の最初の0の値でもあるためかもしれないと思う。しかし、私はこの事件を最後の2時間ごとに試してみた。何か不足していますか? CTEのselectステートメントにもこのケースが必要ですか? a.grosspcsも0の場合、私は2つのケースを作っていますか?私はまだSQLに慣れていませんので、事前に助けてくれてありがとうございます。DividendとDivisorの値が0の場合、どのような場合がありますか?
SELECT datename(MM,a.MonthDate) as Month
,Sum(a.ScrapPcs)/(Sum(a.GrossPcs)*1.00) As ScrapPct
,0.005 As ScrapTarget
,CASE
WHEN Sum(a.ScrapPcs)/(Sum(a.GrossPcs)*1.00) <= 0.005 THEN 1
WHEN Sum(a.ScrapPcs)/(Sum(a.GrossPcs)*1.00) >= 0.9*.005 THEN -1
ELSE 0
END
AS Status
,Case
when a.ScrapPcs=0 then null
Else a.GrossPcs/a.ScrapPcs
end
FROM
(
SELECT DATEADD(month, DATEDIFF(month, 0, b.CreationProdDate), 0) As MonthDate
,Count(b.BOOKING_ID) As ScrapPcs
, 0 As GrossPcs
FROM dbo.CPC_BOOKING b
WHERE b.CreationProdDate Between DATEADD(yy, DATEDIFF(yy, 0, GetDate()), 0) AND DateAdd("d", -1, GetDate())
AND CPC_Level_ID = 37
GROUP BY DATEADD(month, DATEDIFF(month, 0, b.CreationProdDate), 0)
UNION ALL
SELECT DATEADD(month, DATEDIFF(month, 0, n.date), 0) As MonthDate
,0 As ScrapPcs
,Sum(n.Processed) As GrossPcs
FROM [NORIS].[dbo].[USC_CustomerCounts] n
WHERE n.date Between DATEADD(yy, DATEDIFF(yy, 0, GetDate()), 0) AND DateAdd("d", -1, GetDate())
and n.Customer = 'SGM'
GROUP BY DATEADD(month, DATEDIFF(month, 0, n.Date), 0)
) a
group by a.MonthDate,a.GrossPcs, a.ScrapPcs
おかげでそんなに、アイブ氏は – Student1995
ノートをこれを理解しようとしている他の作業に遅れられて: 'NULLIFは(a、b)は'だけEND' – spencer7593
ELSE WHEN = bがTHEN NULL 'CASEのための省略形です確かに、それは月 、合計(a.ScrapPcs)としてこの SELECT DATENAME(MM、a.MonthDate)/のようになります(NULLIF(SUM(a.GrossPcs)、0)* 1.00)として、 ScrapPct 、0.005 ScrapTarget 、CASE ように、合計(a.ScrapPcs)/(NULLIF(SUM(a.GrossPcs)、0)* 1.00)THEN <= 0.005 1 合計(a.ScrapPcs)/(NULLIF(SUM(a.GrossPcs)、0)* 1.00)> = 0.9 * 0.005 THEN -1 ELSE 0 END (a.GrossPcs/NULLIF、 ステータスAS a.ScrapPcs、0) – Student1995