Ich erhalte einen Fehler Falsche Syntax in der Nähe von '>' Jedes der Felder enthalten Dezimalwerte, mit einem NOT NULL und Standardwert von Null. Ich habe verschiedene Klammern ausprobiert, und ich glaube, ich vermisse nur die Formatierung der Aussage des CASE irgendwo.SQL CASE in einer WHERE mit Logik
AND CASE WHEN QtyIssued <> 0 OR WM.QtyToMake <> 0 OR WMat.UnitQtyReqd <> 0 THEN QtyIssued/WM.QtyToMake * WMat.UnitQtyReqd >= .68 ELSE 0 END
Ich brauche für Null in jedem der Werte zu überprüfen, so dass ich von Null
Die gesamte SQL aufgeführt wird unten nicht dividieren erhalten:
SELECT SUBSTRING([SalesOrder], PATINDEX('%[^0]%', [SalesOrder]+'|'), LEN([SalesOrder])) AS SO, WM.SalesOrderLine AS SOLine,
SUBSTRING(WM.Job, PATINDEX('%[^0]%', WM.Job+'|'), LEN(WM.Job)) AS Job, WMat.StockCode, --WM.QtyToMake * WMat.UnitQtyReqd AS Qty2IssuedValue,
CEILING(WM.QtyToMake * WMat.UnitQtyReqd) AS Qty2Issue,
CEILING(WMat.QtyIssued) AS QtyIssued, WMP.WipRelease, WM.JobTenderDate,
WM.Complete ,
CASE WHEN QtyIssued = 0 OR WM.QtyToMake = 0 OR WMat.UnitQtyReqd = 0
THEN 0 ELSE (QtyIssued/(WM.QtyToMake * WMat.UnitQtyReqd)) END AS QtyNotAllocated
FROM dbo.WipMaster AS WM INNER JOIN
dbo.[WipMaster+] AS WMP ON WM.Job = WMP.Job FULL OUTER JOIN
dbo.WipJobAllMat AS WMat ON WM.Job = WMat.Job
WHERE (WMP.WipRelease BETWEEN CONVERT(DATETIME, '2016-04-01 00:00:00', 102) AND
CONVERT(DATETIME, '2016-04-29 00:00:00', 102))
AND CASE WHEN QtyIssued <> 0 OR WM.QtyToMake <> 0 OR WMat.UnitQtyReqd <> 0 THEN QtyIssued/WM.QtyToMake * WMat.UnitQtyReqd >= .68 ELSE 0 END
Was ich wollte, war, meinen Kuchen zu haben und es auch zu essen. LOL –
Ich wollte die mit Null-Werten in den Spalten sehen, aber nicht das Problem mit der Division durch Null. Also, hier ist, was ich gefunden habe ... Sorry, neu im Forum und erarbeiten, wie man es benutzt .... –
AND ((QtyIssued <> 0 ODER WM.QtyToMake <> 0 ODER WMat.UnitQtyReqd <> 0 AND) \t \t \t \t \t \t \t \t \t QtyIssued/NULLIF (WM.QtyToMake, 0) * WMat.UnitQtyReqd> = 0,68 OR \t \t \t \t \t \t \t \t \t QtyIssued = 0 oder WM.QtyToMake * WMAT .UnitQtyReqd = 0 –