Frage

Ich möchte eine Tabelle der Spalte aktualisieren, um die Ergebnisse einer gespeicherten Prozedur mit

create procedure seq
as
DECLARE @NextValue INT;
INSERT SequencesTable DEFAULT VALUES;
DELETE SequencesTable WITH(READPAST); 
SELECT SCOPE_IDENTITY();
go

Ich kann kein UDF verwenden, da es nodeterministic ist. So etwas wie das wird nicht funktionieren

UPDATE [dbo].[t1]     SET [c1] = seq

Ich habe ein Gefühl, das ich diese in die falsche Art und Weise bin nähern.

Ich will nur tun, um eine Tabelle zu aktualisieren, die wie folgt aussieht

1 1 | 2 2
1 4
1 4
5 5
1 2

Um wie folgt aussehen

1 1 | 2 2
3 4
4 4
5 5
6 2

War es hilfreich?

Lösung

Versuchen Sie etwas wie folgt aus:

update a set c1 = c1_new
from (
  select 
    c1, c2
  , c1_new = row_number() over (order by nullif(c1,c1))
  from dbo.t1
  ) a

Spielen Sie mit der inneren Abfrage um, bis Sie etwas bekommen Sie mögen, dann das Update installieren.

Die NULLIF (c1, c1) versucht ursprüngliche Reihenfolge auf der Festplatte zu erhalten. Es gibt immer null.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top