Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/11/2014, 15:46
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta sql entre varias tablas

Código SQL:
Ver original
  1. Tabla ARTICULOS
  2. =====================
  3. CREATE TABLE #articulos(
  4. referencia VARCHAR(100),
  5. descripcion VARCHAR(100)
  6. )
  7. INSERT INTO #articulos VALUES ('REF1', 'DECRIPCION-REF1')
  8. INSERT INTO #articulos VALUES ('REF2', 'DECRIPCION-REF2')
  9. INSERT INTO #articulos VALUES ('REF3', 'DECRIPCION-REF3')
  10. INSERT INTO #articulos VALUES ('REF4', 'DECRIPCION-REF4')
  11. INSERT INTO #articulos VALUES ('REF1B', 'DECRIPCION-REF1B')
  12. INSERT INTO #articulos VALUES ('REF2B', 'DECRIPCION-REF2B')
  13. INSERT INTO #articulos VALUES ('REF3B', 'DECRIPCION-REF3B')
  14. INSERT INTO #articulos VALUES ('REF4B', 'DECRIPCION-REF4B')
  15.  
  16.  
  17. Tabla ESTADÍSTICAS
  18. =====================
  19. DROP TABLE #estadisticas
  20. CREATE TABLE #estadisticas
  21. (
  22. referencia VARCHAR(100),
  23. unidades INT,
  24. fecha VARCHAR(100)
  25. )
  26.  
  27. INSERT INTO #estadisticas VALUES ('REF1', 2 , '01/01/2014')
  28. INSERT INTO #estadisticas VALUES ('REF1', 3 , '10/01/2014')
  29. INSERT INTO #estadisticas VALUES ('REF2', 2 , '16/03/2014')
  30. INSERT INTO #estadisticas VALUES ('REF2', 6 , '21/04/2014')
  31. INSERT INTO #estadisticas VALUES ('REF3', 9 , '06/04/2014')
  32. INSERT INTO #estadisticas VALUES ('REF3', 1 , '12/05/2014')
  33. INSERT INTO #estadisticas VALUES ('REF4', 7 , '21/01/2014')
  34. INSERT INTO #estadisticas VALUES ('REF4', 5 , '10/03/2014')
  35. INSERT INTO #estadisticas VALUES ('REF1B', 2 , '06/05/2014')
  36. INSERT INTO #estadisticas VALUES ('REF2B', 2 , '23/03/2014')
  37. INSERT INTO #estadisticas VALUES ('REF3B', 2 , '17/05/2014')
  38.  
  39.  
  40. Tabla ARTICULOS EQUIVALENTES
  41. ============================
  42. CREATE TABLE #equivalencias(
  43. referencia1 VARCHAR(100),
  44. referencia2 VARCHAR(100)
  45. )
  46. INSERT INTO #equivalencias VALUES ('REF1','REF1B')
  47. INSERT INTO #equivalencias VALUES  ('REF1','REF1C')
  48. INSERT INTO #equivalencias VALUES  ('REF2','REF2B')
  49. INSERT INTO #equivalencias VALUES  ('REF2','REF2C')
  50. INSERT INTO #equivalencias VALUES  ('REF3','REF3B')
  51. INSERT INTO #equivalencias VALUES  ('REF3','REF3C')
  52. INSERT INTO #equivalencias  VALUES ('REF4','REF4B')
  53. INSERT INTO #equivalencias  VALUES ('REF4','REF4C')
  54.  
  55.  
  56.  
  57. SELECT referencia1, SUM(unidades) AS unidades FROM(
  58. SELECT referencia1, isnull(unidades,0) AS unidades FROM #estadisticas AS t1 RIGHT JOIN
  59. (
  60. SELECT referencia1 FROM #equivalencias
  61. UNION
  62. SELECT referencia2 FROM #equivalencias) AS t2 ON (t1.referencia=t2.referencia1)
  63. ) AS t3 GROUP BY referencia1

Resultado:

REF1 5
REF1B 2
REF1C 0
REF2 8
REF2B 2
REF2C 0
REF3 10
REF3B 2
REF3C 0
REF4 12
REF4B 0
REF4C 0

Nota: Si filtras por fecha, por ejemplo REF1C que fecha tendria??? la misma que su equivalente???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me