Tema: Update!
Ver Mensaje Individual
  #10 (permalink)  
Antiguo 16/06/2011, 09:21
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Update!

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 original
  1. DECLARE @Tabla TABLE (id INT, nombre VARCHAR(10), grupo INT)
  2. INSERT INTO @Tabla VALUES (1, 'uno', NULL)
  3. INSERT INTO @Tabla VALUES (2, 'dos', NULL)
  4. INSERT INTO @Tabla VALUES (3, 'tres', NULL)
  5. INSERT INTO @Tabla VALUES (4, 'cuatro', NULL)
  6. INSERT INTO @Tabla VALUES (5, 'cinco', NULL)
  7. INSERT INTO @Tabla VALUES (6, 'seis', NULL)
  8. INSERT INTO @Tabla VALUES (7, 'siete', NULL)
  9. INSERT INTO @Tabla VALUES (8, 'ocho', NULL)
  10. INSERT INTO @Tabla VALUES (9, 'nueve', NULL)
  11. INSERT INTO @Tabla VALUES (10,'diez', NULL)
  12. INSERT INTO @Tabla VALUES (11,'once', NULL)
  13. INSERT INTO @Tabla VALUES (12,'doce', NULL)
  14. SELECT * FROM @Tabla
  15.  
  16. DECLARE @indice INT;
  17. SET @indice = 0
  18. DECLARE @total INT;
  19. SET @total = 0
  20.  
  21. UPDATE @Tabla SET @indice = grupo = CASE WHEN @total % 3 = 0 THEN @indice + 1 ELSE @indice END, @total = @total + 1
  22.                
  23. 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.