Ich brauche eine neue Spalte zu erstellen, in dem folgendes beachtet wird:T-SQL: Loop in CASE-Anweisung
Wenn alle
Order_ID
innerhalb einID
haben eineApproved
Flagge von undDenied
flag , Dann kennzeichnen sie als Freigegeben. (Beispiel:ID 1
)Wenn alle
Order_ID
innerhalb einesID
eine Flagge vonApproved
undDenied
Flagge , kennzeichnen sie dann als verweigert. (Beispiel:ID 2
)Wenn einige
Order_ID
innerhalb einemID
eineApproved
Flagge undDenied
Flagge und die anderen sind entweder mit einemApproved
Flagge undDenied
flagge von oder eineApproved
flagge von undDenied
flagge von , Dann kennzeichnen Sie es als Teilweise genehmigt. (Beispiel:ID 3
und6
)- Wenn jede
Order_ID
innerhalb einemID
eineApproved
Flagge undDenied
Flagge unabhängig von der anderenOrder_ID
innerhalb desID
, kennzeichnen sie dann als Fehler. (Beispiel:ID 4
) - Wenn alle
Order_ID
innerhalb einesID
eine Flagge vonApproved
undDenied
Flagge , kennzeichnen sie dann als Ausstehende Genehmigung.(Beispiel:ID 5
)
Dies ist eine vereinfachte Tabelle I als Beispiel verwenden:
**ID Order_ID Approved Denied
1 101 1 0
2 201 0 1
2 202 0 1
1 102 1 0
4 401 0 1
3 301 0 1
6 601 0 1
1 103 1 0
3 302 1 0
3 303 0 0
5 501 0 0
4 402 1 0
6 602 1 0
5 502 0 0
4 403 1 1
5 503 0 0
und das ist das Ergebnis, das ich erwarte:
**Id Order_ID Approved Denied Approval_status
1 101 1 0 Approved
2 201 0 1 Denied
2 202 0 1 Denied
1 102 1 0 Approved
4 401 0 1 Error
3 301 0 1 Partially approved
6 601 0 1 Partially approved
1 103 1 0 Approved
3 302 1 0 Partially approved
3 303 0 0 Partially approved
5 501 0 0 Pending Approval
4 402 1 0 Error
6 602 1 0 Partially approved
5 502 0 0 Pending Approval
4 403 1 1 Error
5 503 0 0 Pending Approval
Vielen Dank viel im Voraus !! Ich bin hauptsächlich verwirrt, wie innerhalb einer ID
in einer CASE-Anweisung Schleife.
Verwenden Sie keine Schleife. Erstellen Sie die Spalte und führen Sie dann 3 oder 4 Aktualisierungen durch, um Ihre Geschäftsregeln in der richtigen Reihenfolge zu erstellen. ** KEINE LOOPS IN SQL! ** – Hogan
@hogan wie bleibe ich nur innerhalb einer ID? –
Wenn Sie nicht mit Sets arbeiten, bedeutet dies, dass Sie eine Änderung auf alle IDs anwenden, die eine Anforderung erfüllen. Wenn Sie beispielsweise nach ID gruppieren, können Sie die Anzahl (*) mit der Summe (*) vergleichen, um festzustellen, ob ein Feld für jedes Element 1 ist. – Hogan