FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
SELECT con campos columnados
Es posible hacer una consulta SELECT sobre MySQL que devuelva diversas columnas según el valor de un campo?
Imaginemos que este SELECT
devuelve esta muestra Código:
+----------+--------+-----------+ | cliente | mes | importe | +----------+--------+-----------+ | PEPE | 201901 | 25000 | | ROSA | 201901 | 180000 | | EDU | 201901 | 128000 | | JAIME | 201901 | 20000 | | JUAN | 201902 | 250000 | | PEPE | 201902 | 25000 | | ROSA | 201902 | 180000 | | EDU | 201902 | 128000 | | JAIME | 201902 | 20000 | | JUAN | 201902 | 250000 | | PEPE | 201903 | 25000 | | ROSA | 201903 | 180000 | | EDU | 201903 | 128000 | | JAIME | 201903 | 20000 | | JUAN | 201904 | 250000 | | PEPE | 201904 | 25000 | | ROSA | 201904 | 180000 | | EDU | 201904 | 128000 | | JAIME | 201904 | 20000 | | JUAN | 201904 | 250000 | +----------+--------+-----------+ Muchas gracias Última edición por ecfisa fecha: 04-08-2019 a las 00:07:36. Razón: Corregir tabulación de los datos |
#2
|
||||
|
||||
No se entiende. Da el ejemplo de como deberia quedar.
__________________
El malabarista. |
#3
|
||||
|
||||
busca la utilizacion de "Pivot"
__________________
Dulce Regalo que Satanas manda para mi..... |
#4
|
|||
|
|||
Deberia quedar asi:
Cita:
Gracias Última edición por Casimiro Notevi fecha: 04-08-2019 a las 11:53:42. |
#5
|
|||
|
|||
Investigaré las tablas Pivot, desconocía esta funcionalidad.
Muchas gracias. y saludos |
#6
|
|||
|
|||
hola a todos
Una forma de poder solucionar tu problema puede ser esta:
El problema: que te sale una morcilla de SQL... y a parte puede llegar a ser bastante lenta la ejecución, y cualquier cambio en las subconsultas de los meses tienes que aplicarlas a los doce meses. En cuanto a "PIVOT", que es la solución perfecta a este problema, es un método que realiza el motor de BBDD de microsoft MsSQL y no se si existe también en algún otro motor de BBDD, pero creo que no existe como tal en MySQL, o por lo menos yo no he encontrado nunca información de como aplicarlo directamente para MySQL. Si es verdad que con procedimientos y tablas en memoria se puede llegar a hacer, pero no es tan trivial como lo hace MsSQL. Lo que si tiene MySQL y se puede utilizar en este caso es la función GROUP_CONCAT() que puede hacer algo similar, concatena los valores de un determinado campo para varios registros cuando se hace un GROUP BY El ejemplo para este caso sería este:
Ventajas: El SQL es mucho mas corto que el anterior, y a nivel de rendimiento, también es mas rápido. Desventajas: Los datos de ventas salen todos en el mismo campo, separados por comas. Pero entre comillas es un mal menor, puesto que ya desde delphi es relativamente fácil procesarlos, por ejemplo añadiendo los campos de los meses como campos calculados en el query/tabla e inserta el valor en evento onCalculate |
#7
|
|||
|
|||
Dandole vueltas al tema de extraer la ventas de cada mes del campo con la lista de valores separados por comas, se puede utilizar algo así:
y con esto ya si se tiene una tabla con cada venta de un determinado mes en su correspondiente columna del mes |
#8
|
|||
|
|||
Yo probaría la siguiente instrucción:
|
#9
|
|||
|
|||
Si esta es la solución que me ha parecido mejor aunque he utilizado if en lugar de case .
También he visto alguna solución para cuando no se conocen previamente los nombre de los campos, como esta: http://buysql.com/mysql/14-how-to-au...ot-tables.html Muchas gracias y saludos a todos. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
SELECT con campos calculados y condicionados | Angel.Matilla | Firebird e Interbase | 9 | 11-05-2019 11:56:14 |
select count con varios campos | aanil | SQL | 4 | 17-05-2008 02:37:18 |
Alinear campos en un select (comboBox). | mcalmanovici | PHP | 3 | 21-09-2007 06:45:35 |
un Select max de varios campos | Camilo | SQL | 3 | 07-09-2007 16:34:15 |
select que me mueste los campos de una tabla | cahosoft | Oracle | 1 | 01-10-2004 00:02:54 |
|