Hola Flakiss:
No sé si entendí correctamente lo que quieres hacer, pero creo que sería algo más o menos así, supongamos que tienes la siguiente tabla
Código:
id nombre grupo
----------- ---------- -----------
1 uno NULL
2 dos NULL
3 tres NULL
4 cuatro NULL
5 cinco NULL
6 seis NULL
7 siete NULL
8 ocho NULL
9 nueve NULL
10 diez NULL
11 once NULL
12 doce NULL
Ahora supongamos que queremos hacer grupos de 3 elementos, es decir, hacer algo como esto:
Código:
id nombre grupo
----------- ---------- -----------
1 uno 1
2 dos 1
3 tres 1
4 cuatro 2
5 cinco 2
6 seis 2
7 siete 3
8 ocho 3
9 nueve 3
10 diez 4
11 once 4
12 doce 4
Hay una forma de hacer esto en una sola línea de código, sería más o menos así:
Código SQL:
Ver originalDECLARE @Tabla TABLE (id INT, nombre VARCHAR(10), grupo INT)
INSERT INTO @Tabla VALUES (1, 'uno', NULL)
INSERT INTO @Tabla VALUES (2, 'dos', NULL)
INSERT INTO @Tabla VALUES (3, 'tres', NULL)
INSERT INTO @Tabla VALUES (4, 'cuatro', NULL)
INSERT INTO @Tabla VALUES (5, 'cinco', NULL)
INSERT INTO @Tabla VALUES (6, 'seis', NULL)
INSERT INTO @Tabla VALUES (7, 'siete', NULL)
INSERT INTO @Tabla VALUES (8, 'ocho', NULL)
INSERT INTO @Tabla VALUES (9, 'nueve', NULL)
INSERT INTO @Tabla VALUES (10,'diez', NULL)
INSERT INTO @Tabla VALUES (11,'once', NULL)
INSERT INTO @Tabla VALUES (12,'doce', NULL)
SELECT * FROM @Tabla
DECLARE @indice INT;
SET @indice = 0
DECLARE @total INT;
SET @total = 0
UPDATE @Tabla SET @indice = grupo = CASE WHEN @total % 3 = 0 THEN @indice + 1 ELSE @indice END, @total = @total + 1
SELECT * FROM @Tabla
El truco está en el update, ahí puedes hacer asignación de campos y al mismo tiempo actualizar las variables que estás utilizando. Creo que esto sería más o menos lo que quieres hacer. Haz la prueba para ver si te sirve y si tienes alguna duda lo comentas en el foro.
Saludos
Leo.