MySQL - Simular referencias cruzadas en mysql

   
Vista:

Simular referencias cruzadas en mysql

Publicado por Pedro Jesús (2 intervenciones) el 25/06/2012 21:02:37
Le muestro una consulta en SQL que resolvería mi problema, pero por desgracia como verán no funcionaría en MYSQL ya que TRANSFORM y PIVOT no son permitidos.

TRANSFORM Sum(srv_datos.cantidad1+srv_datos.cantidad2+srv_datos.cantidad3) AS SumaDecantidad1
SELECT srv_servicios.servicio
FROM srv_datos, srv_servicios
WHERE (((srv_servicios.id)=[srv_datos].[servicio]))
GROUP BY srv_servicios.servicio, srv_servicios.id
ORDER BY srv_servicios.id
PIVOT srv_datos.municipio;

Como notarán en la consulta intervienen dos tablas, srv_servicios que tiene los campos id y servicios, este último es de tipo texto y contiene la descripción del servicio.

La tabla srv_datos contiene los campos id, servicio (este de tipo entero relacionado con srv_servicios.id), municipio, cantidad1, cantidad2, cantidad3.

La consulta anterior selecciona como encabezado de fila los diferentes servicios y como encabezado de columnas los diferentes municipios, en la intersección de filas y columnas la suma de las cantidades asociadas al servicio y municipio.

Necesito traducir esta consulta a MYSQL.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Simular referencias cruzadas en mysql

Publicado por Pedro Jesús Abreu Gesen pedro@ltu.jovenclub.cu (2 intervenciones) el 26/06/2012 21:21:19
Saludos, ya logré la consulta, se las dejo por si en algún momento le hiciera falta

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
select     i.servicio servicio
,          sum(
               if(f.municipio=1
               ,   am89+am910+am1011+am1112
               ,   null
               )
           ) "Manati"
,          sum(
               if(f.municipio=2
               ,   am89+am910+am1011+am1112
               ,   null
               )
           ) "pp"
,          sum(
               if(f.municipio=3
               ,   am89+am910+am1011+am1112
               ,   null
               )
           ) "Menendez"
,          sum(
               if(f.municipio=4
               ,   am89+am910+am1011+am1112
               ,   null
               )
           ) "Majibacoa"
,          sum(
               if(f.municipio=5
               ,   am89+am910+am1011+am1112
               ,   null
               )
           ) "Tunas"
,          sum(
               if(f.municipio=6
               ,   am89+am910+am1011+am1112
               ,   null
               )
           ) "Jobabo"
,          sum(
               if(f.municipio=7
               ,   am89+am910+am1011+am1112
               ,   null
               )
           ) "Colombia"
,          sum(
               if(f.municipio=8
               ,   am89+am910+am1011+am1112
               ,   null
               )
           ) "Amancio"
,          sum(
               if(f.municipio=9
               ,   am89+am910+am1011+am1112
               ,   null
               )
           ) "CI"
 
from       srv_datos  f
 
inner join srv_servicios       i
on         f.servicio      = i.id
 
group by   f.servicio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Simular referencias cruzadas en mysql

Publicado por Max Campos (1 intervención) el 03/10/2013 21:43:13
Muy buen aporte me a servido mucho. Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Simular referencias cruzadas en mysql

Publicado por Leonardo Perez lpr20006@gmail.com (1 intervención) el 16/01/2014 22:28:08
Saludos Pedro para ti y todo el personal del Joven Club

Este tipo de consulta es para cuando los valores son fijo, pero cuando son dinamico, se debe realizar otro tipo de operacion, incluir consultas anidadas que determinen el los valores de los campos a combertir en columnas, como por ejemplo en vez de municipio, serian por productos.

Saluda a todos en Las Tunas, dale mi correo a Raimon
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar