Ich habe diese Tabelle jetztWie aktualisiert man eine Spalte über Row_Number mit einem anderen Wert für jede Zeile?
CREATE TABLE [dbo].[DatosLegales](
[IdCliente] [int] NOT NULL,
[IdDatoLegal] [int] NULL,
[Nombre] [varchar](max) NULL,
[RFC] [varchar](13) NULL,
[CURP] [varchar](20) NULL,
[IMSS] [varchar](20) NULL,
[Calle] [varchar](100) NULL,
[Numero] [varchar](10) NULL,
[Colonia] [varchar](100) NULL,
[Pais] [varchar](50) NULL,
[Estado] [varchar](50) NULL,
[Ciudad] [varchar](50) NULL,
[CodigoPostal] [varchar](10) NULL,
[Telefono] [varchar](13) NULL,
[TipoEmpresa] [varchar](20) NULL,
[Tipo] [varchar](20) NULL,
CONSTRAINT [PK_DatosLegales] PRIMARY KEY CLUSTERED
(
[IdCliente] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
)
Ich brauche die IdDatoLegal Spalte zu aktualisieren. Im Moment habe ich 80 Zeilen auf dieser Tabelle, also muss ich jede Zeile mit den Nummern 1, 2, 3 ... 79, 80 aktualisieren.
Ich habe versucht, einfache Abfragen zu gespeicherten Prozeduren ohne Erfolg überhaupt.
Ich habe dieses Shops Verfahren jetzt:
ALTER PROCEDURE dbo.ActualizarDatosLegales
@RowCount int
AS
DECLARE @Inicio int
SET @Inicio = 0
WHILE @Inicio < @@RowCount
SET @Inicio += 1;
BEGIN
UPDATE DatosLegales SET IdDatoLegal = @Inicio WHERE (SELECT ROW_NUMBER() OVER (ORDER BY IdCliente) AS RowNum FROM DatosLegales) = @Inicio;
END
Es gibt diese Meldung, wenn ich es laufen
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
Ich denke, das ist, weil in der Unterabfrage (SELECT ROW_NUMBER() OVER (ORDER BY IdCliente) AS rownum VON DatosLegales) es 80 Zeilen zurückgibt, wo es nur eine zurückkehren sollte (aber jedes Mal, sollte es eine diferent Zahl sein.
wissen Sie, was ich hinzufügen müssen die Unterabfrage, damit es funktioniert? und vor allem, ist die Schleife und der Rest der Prozedur richtig?
Dank im Voraus
verwenden Sie SQL Server? – luchosrock
@luchosrock - Die Syntax, eckige Klammer Begrenzer und Fehlermeldung zeigen SQL Server (obwohl möglicherweise Sybase, wenn das die gleichen Fehlermeldungen hat, nehme ich an). –