मैं अभीप्रत्येक पंक्ति के लिए एक अलग मान के साथ Row_Number के माध्यम से कॉलम को कैसे अपडेट करें?
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]
)
मैं IdDatoLegal स्तंभ अद्यतन करने की आवश्यकता इस तालिका है। अभी मेरे पास उस तालिका पर 80 पंक्तियां हैं, इसलिए मुझे प्रत्येक पंक्ति को संख्या 1, 2, 3 के साथ अपडेट करने की आवश्यकता है ... 79, 80.
मैंने बिना किसी सफल होने के संग्रहित प्रक्रियाओं के लिए सरल प्रश्नों का प्रयास किया है।
मैं अभी इस भंडार प्रक्रिया है:
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
यह इस संदेश देता है जब मैं चलाने यह
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
मुझे लगता है कि क्योंकि सबक्वेरी में (चयन ROW_NUMBER() से अधिक (द्वारा आदेश की IdCliente) DATOSLegales से AS RowNum) यह 80 पंक्तियों को लौटाता है जहां इसे केवल एक लौटाया जाना चाहिए (लेकिन प्रत्येक बार यह एक अलग संख्या होना चाहिए।
क्या आपको पता है कि मुझे क्या जोड़ना है यह काम करने के लिए subquery? और सब से ऊपर, लूप और शेष प्रक्रिया सही है?
धन्यवाद अग्रिम
आप एसक्यूएल सर्वर का उपयोग कर रहे हैं? – luchosrock
@ लूचोसॉक - सिंटैक्स, स्क्वायर ब्रैकेट डिलीमीटर, और त्रुटि संदेश SQL सर्वर इंगित करता है (यद्यपि संभवतः साइबेस यदि उसके पास एक ही त्रुटि संदेश है तो मुझे लगता है)। –