Das Problem verortet sich in der 4. Zeile der SELECT-Anweisung auf: CASE WHEN ct.TransactionReason=622 THEN ABS(ct.netquantity) ELSE c.RealNetWeight END AS NetWeight
SQL CASE mischt meine Gruppierung
Wenn ich diese Zeile auf die Erklärung hinzufügen, ändern sich meine Gruppierung. Anstatt eine Zeile zurückzugeben gibt es mir jetzt die Anzahl der Zeilen verschiedener c.realnetweight
zurück. Problem ist, dass ich nur eine Zeile zurückgeben möchte. So ähnlich wie ein Coalesce, dass wenn es eine ct.transactionreason = 622
gibt, sollte es mir ABS(ct.netquantity)
geben, sonst die c.realnetweight
. Code kann unten gefunden werden, Vorschläge wären sehr hilfreich. Vielen Dank.
SELECT CASE WHEN P.Wrapped = 1 THEN T.[Level]+1 ELSE T.[Level] END AS [Level]
, @CoilId AS CoilId
, c.SupplierCoilID
, CASE WHEN ct.TransactionReason=622 THEN ABS(ct.netquantity) ELSE c.RealNetWeight END AS NetWeight
, C.RealGrossWeight
, p1.Description
, p1.product
, s.StackID
, s.ProductID
, s.Weight
, P.Product
, P.Description AS 'ProductDescription'
, COUNT(t.BlankId) AS 'NumberOfBlanks'
, c1.Description as 'Status'
, pv.ProductionWeight
, pv.BlankWeight
, t.BlankStatus
FROM @Trace T
INNER JOIN SKUTraceability SKUT ON SKUT.SKUID = T.SKUID
INNER JOIN Stack s ON SKUT.StackID = s.StackID
INNER JOIN Product p ON s.ProductID = p.ProductID
INNER JOIN Coil c ON [email protected]
INNER JOIN CoilTransaction ct on [email protected]
INNER JOIN Product p1 ON c.ProductID=p1.ProductID
INNER JOIN Code c1 ON t.BlankStatus=c1.codenumber AND c1.codetypeid=17
INNER JOIN @ProductVersion pv ON pv.ProductID=p.ProductId AND s.ProductVersion = pv.ProductVersion
WHERE t.BlankId IS NOT NULL
GROUP BY T.[Level]
, c.SupplierCoilID
, CASE WHEN ct.TransactionReason=622 THEN ABS(ct.netquantity) ELSE c.RealNetWeight END
, c.RealGrossWeight
, p1.Description
, p1.product
, s.StackID
, s.ProductID
, s.Weight
, p.Product
, p.Description
, c1.Description
, pv.ProductionWeight
, pv.BlankWeight
, p.Wrapped
, t.BlankStatus
wie über Sie den Fall, wenn in der Gruppe von Säulen entfernen und stattdessen ersetzen sie durch NetWeight Spalt? – StackTrace
Dann gibt es mir einen Fehler über ct.transactionreason und ct.netquantity nicht in der Funktion GROUP BY oder AGGREGATE. –
Sie müssen sie in der Gruppe durch oder in einer Aggregatklausel hinzufügen. Also, wenn du ein anderes 'c.realnetweight' hast, welches in deiner' one row' angezeigt werden sollte - das kleinere, das größte oder was? – gotqn