Saltar al contenido
Underc0de /foro

[SOLUCIONADO] Pivot tabla Mysql

Iniciado por REMHINOB, Mayo 13, 2019, 02:03:31 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Avatar de REMHINOB
Mayo 13, 2019, 02:03:31 PM Ultima modificación: Mayo 14, 2019, 12:32:14 AM por Gabriela

Hola, necesito su ayuda por favor, tengo una tabla cuya estructura es asi:
id_tareo id_personal fec_tareopers   id_codtareo
000001     23         01/05/2019    TD
000002     23         02/05/2019    TD
000003     23         03/05/2019    TN
000004     12         01/05/2019    F
000005     12         02/05/2019    TN
000006     12         03/05/2019    TN

y deseo que mi resultado sea algo asi:

id_personal 01/05/2019  02/05/2019 03/05/2019     TD  TN   F
    23                   TD             TD        TN                  2    1    0
    12                    F              TN        TN                  0    2    1

intente con esta linea pero solo me llena la primera columna (01/05/2019):

SELECT  id_personal, 
(CASE WHEN AK.fec_tareopers = '01/05/2019' THEN AK.id_codtareo ELSE NULL END)  '01/05/2019',
(CASE WHEN AK.fec_tareopers = '02/05/2019' THEN AK.id_codtareo ELSE NULL END)  '02/05/2019'
(CASE WHEN AK.fec_tareopers = '03/05/2019' THEN AK.id_codtareo ELSE NULL END)  '02/05/2019'
from adm_tareopers AK
inner join adm_personal AP on AK.id_personal=AP.id_personal
group by AK.id_personal

de antemano gracias por su ayuda
WhatsApp Telegram

3 respuestas

Avatar de Solid Water
Mayo 13, 2019, 03:16:22 PM #1 Ultima modificación: Mayo 13, 2019, 03:32:03 PM por Solid Water
Prueba así:

SELECT  id_personal, 
(select id_codtareo from adm_tareopers where fec_tareopers = '01/05/2019' and id_personal = AK.id_personal) as '01/05/2019',
(select id_codtareo from adm_tareopers where fec_tareopers = '02/05/2019' and id_personal = AK.id_personal) as '02/05/2019',
(select id_codtareo from adm_tareopers where fec_tareopers = '03/05/2019' and id_personal = AK.id_personal) as '03/05/2019'
from adm_tareopers AK
inner join adm_personal AP on AK.id_personal=AP.id_personal
group by AK.id_personal

Saludos,

Avatar de REMHINOB
Mayo 13, 2019, 07:46:05 PM #2 Ultima modificación: Mayo 14, 2019, 12:31:43 AM por Gabriela
Cita de: Solid Water en Mayo 13, 2019, 03:16:22 PM
Prueba así:

SELECT  id_personal, 
(select id_codtareo from adm_tareopers where fec_tareopers = '01/05/2019' and id_personal = AK.id_personal) as '01/05/2019',
(select id_codtareo from adm_tareopers where fec_tareopers = '02/05/2019' and id_personal = AK.id_personal) as '02/05/2019',
(select id_codtareo from adm_tareopers where fec_tareopers = '03/05/2019' and id_personal = AK.id_personal) as '03/05/2019'
from adm_tareopers AK
inner join adm_personal AP on AK.id_personal=AP.id_personal
group by AK.id_personal

Saludos,


ERES UN GENIO!!!!!, Gracias de corazon hemano

Avatar de Solid Water
Gracias.
Si el usuario de la app se confunde y para el mismo id y misma fecha crea 2 o más tareopers la consulta fallará. Para evitar eso o declaras los 3 campos como primary key compuesta o haces un filtro que primero busque que ya no exista y si existe no lo permita o haga un update en lugar de un insert o le dices que solo traiga la primer ocurrencia en el sql agregando limit 1 dentro de cada subconsulta de los parentesis. Eso último filtraría el error pero quedaría la basura en la base de datos.

¿Te quedó una duda sobre Dudas y pedidos generales?

Preguntala y te responde la comunidad (y el asistente Underc0de IA si nadie llega antes). Es gratis y tarda un minuto.

Ya tengo cuenta
Guardamos tu pregunta en este navegador: después de entrar la publicás con un clic.
Grupo de WhatsApp