Ich bin mir sicher, dass es eine elegantere (oder einfach "korrekte") Möglichkeit gibt, das zu tun, was ich erreichen möchte. Ich glaube, ich muss einen Cursor verwenden, aber ich kann meinen Kopf nicht so richtig einwickeln.Unterstützung, die einen Cursor in tSQL macht
Ich habe den Code unten an die Tage nach links in einen Vertrag zu finden, aber wenn ich die ‚Wo‘ -Klausel setzen (die im Grunde einen bestimmten Datensatz auswählt), erhalte ich diese Fehlermeldung:
‚Subquery mehr als 1 Wert '
Deshalb denke ich, ich brauche einen Cursor; Durchlaufen der Datensätze und Aktualisieren eines Felds mit der Anzahl der verbleibenden Tage in einem Vertrag.
Hier ist, was ich habe, was in-so viel funktioniert, dass es eine Zahl zurückgibt.
DECLARE @TodaysDT date = GetDate()
DECLARE @ContractExpirationDT date =
(SELECT ExprDt from CONTRACTS
WHERE ID = 274);
DECLARE @DaysRemaining INT =
(SELECT DATEDIFF(dd, @ContractExpirationDT,@TodaysDT));
Print @DaysRemaining;
Dies gibt einen richtigen Wert für eine bestimmte Datensatz-ID (diesen Fall, ID 274)
Wie kann ich einen Cursor verwenden, um durch jeden Datensatz zu dem Schritt, und dann ein Feld mit dem in jedem Datensatz aktualisieren @DaysRemaining
Wert?
Vielen Dank für Ihre Zeit!