Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/11/2016, 14:26
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: agregar fila en base a una condicion

Pero como agregar una fila? estaras hablando de agregar un registro a aquellos que cumplan con la condicion no? de ser asi quedaria:

Código SQL:
Ver original
  1. CREATE TABLE #temporal
  2. (
  3. id INT,
  4. parte nvarchar(20),
  5. marca nvarchar(20)
  6. )
  7.  
  8. INSERT INTO #temporal VALUES (1, 'volante','ford')
  9. INSERT INTO #temporal VALUES (1, 'asiento','ford')
  10. INSERT INTO #temporal VALUES (1, 'puerta','ford')
  11. INSERT INTO #temporal VALUES (1, 'llanta','ford')
  12. INSERT INTO #temporal VALUES (1, 'cubierta','ford')
  13.  
  14. INSERT INTO #temporal VALUES (2, 'volante','chevrolet')
  15. INSERT INTO #temporal VALUES (2, 'asiento','chevrolet')
  16. INSERT INTO #temporal VALUES (2, 'puerta','chevrolet')
  17. INSERT INTO #temporal VALUES (2, 'llanta','chevrolet')
  18.  
  19. INSERT INTO #temporal VALUES (3, 'volante','toyota')
  20. INSERT INTO #temporal VALUES (3, 'asiento','toyota')
  21. INSERT INTO #temporal VALUES (3, 'puerta','toyota')
  22. INSERT INTO #temporal VALUES (3, 'llanta','toyota')
  23. INSERT INTO #temporal VALUES (3, 'cubierta','toyota')
  24.  
  25. INSERT INTO #temporal VALUES (4, 'volante','peugeot')
  26. INSERT INTO #temporal VALUES (4, 'asiento','peugeot')
  27. INSERT INTO #temporal VALUES (4, 'puerta','peugeot')
  28. INSERT INTO #temporal VALUES (4, 'llanta',' peugeot')
  29.  
  30. --Hacemos el insert a la tabla
  31. INSERT INTO #temporal
  32. --seleccionamos los datos necesarios para agregar la fila
  33. SELECT id, 'cubierta', marca  FROM(
  34. --con el resultado de la sumatoria sabemos que registros son los que necesitamos
  35. SELECT CASE WHEN t_llanta=1 AND t_cubierta=0 THEN 1 ELSE 0 END AS ultimo, id, marca FROM(
  36. hacemos una sumatoria para saber cuales registros tienen llanta y no tienen cubierta
  37. SELECT SUM(llanta) AS t_llanta, SUM(cubierta) AS t_cubierta, id, marca FROM(
  38. --obtenemos cuales registros tienen llanta o cubierta
  39. SELECT CASE WHEN parte='llanta' THEN 1 ELSE 0 END AS llanta,
  40. CASE WHEN parte='cubierta' THEN 1 ELSE 0 END AS cubierta, id, marca
  41. FROM #temporal
  42. ) AS t1 GROUP BY id, marca
  43. ) AS total
  44. ) AS ultimo WHERE ultimo=1
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me