PIVOTE (sin agregación)

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
  

Notael Vie, 15 Jun 2018 1:32 am

Buenas noches.

Tengo una pregunta sencilla, pero está tomando mi sueño. ¿Cómo hacer un pivote sin agregación? Necesito "" abarcan estos horarios...
[url = https & #58; //imgbb & #46; con /] [img]https%20&%20#58;%20//image%20&%20#46;%20ibb%20&%20#46;%20co/g3nxud/asd%20#46%20&;%20p%20ng[/img]
Código: Seleccionar todo
select --a.PIS,
       --to_char(cast(a.DATAHORA as date), 'dd-mon-rrrr') dia,
       to_char(cast(a.DATAHORA as date), 'hh24:mm') hora
       --count(a.PIS) contador
  from coleta a
where 1 = 1
      --and    to_char(cast(a.DATAHORA as date),'dd-mon-rrrr') = pdData
   and a.DATAHORA >= '04-jun-2018'
   and a.PIS = '20474191251'
   and a.DATAHORA <= '05-jun-2018'
   and to_char(cast(a.DATAHORA as date), 'd') not in ('7', '8') --não busca o sábado e domingo
--group by a.PIS, to_char(cast(a.DATAHORA as date), 'dd-mon-rrrr'),to_char(cast(a.DATAHORA as date), 'hh24:mm')
--having count(a.PIS) <> '4' removido devido ao if buscando o contador
--order by 1, 2
;
brunomruiz
Ubicación: Bebedouro - SP

Notael Vie, 15 Jun 2018 8:13 am

No entiendo exactamente su necesidad.
¿Desea pasar cada hora: minuto de columnas?
O ¿cada vez las columnas y tendría los minutos que ella pertenece?

¿Como sería la salida deseada?
DanielNN
Ubicación: Fortaleza - CE

att,

Daniel N.N.

Notael Lun, 25 Jun 2018 10:42 am

Mohamadjavadnajafian escribiste: No entiendo exactamente su necesidad.
¿Desea pasar cada hora: minuto de columnas?
O ¿cada vez las columnas y tendría los minutos que ella pertenece?

¿Como sería la salida deseada?

Hola. En este seleccione comentó el PIS, pero es la idea: PIS, anexo 1, lista 2, Anexo 3, horario 4.

Hora y minuto abarcan columnas y sin líneas.
brunomruiz
Ubicación: Bebedouro - SP

Notael Mar, 26 Jun 2018 9:17 am

Lo que no entiendo es la necesidad de transponer HH: MI columna.
De esa manera hay 1440 columnas posible almacenarlo. Y que esto complica de forma dinámica.

Mira: viewtopic.php?f=3&t=10571&p=41564&hilit=pivot#p41564 viewtopic.php?f=2&t=10584&p=41600&hilit=pivot#p41600
DanielNN
Ubicación: Fortaleza - CE

att,

Daniel N.N.

Notael Dom, 08 Jul 2018 5:55 pm

Mohamadjavadnajafian escribiste: Lo que no entiendo es la necesidad de transponer HH: MI columna.
De esa manera hay 1440 columnas posible almacenarlo. Y que esto complica de forma dinámica.

Mira: viewtopic.php?f=3&t=10571&p=41564&hilit=pivot#p41564 viewtopic.php?f=2&t=10584&p=41600&hilit=pivot#p41600
Hola Daniel, he estado viajando y detenido en el hospital, bueno, vamos. No pretendo "pivote" 1440 columnas, porque voy a romper para el PIS y la fecha, tendría este aspecto: PTS 1 2 hora 3 hora 4 hora 123456 07/07/18 de fecha tiempo 7:40 12:01 13:13 17:00 estoy leyendo tus artículos. Si tienes una luz siempre vuelvo. Gracias.
brunomruiz
Ubicación: Bebedouro - SP

Notael Mié, 11 Jul 2018 3:15 pm

¿Por lo tanto está limitada a 4 horas resgisters? ¿O puede tener más de 4 para cada fecha/PIS?
DanielNN
Ubicación: Fortaleza - CE

att,

Daniel N.N.

Notael Mié, 11 Jul 2018 4:54 pm

Mohamadjavadnajafian escribiste: ¿Por lo tanto está limitada a 4 horas resgisters? ¿O puede tener más de 4 para cada fecha/PIS?

Se limita a 4 horas. Lo que es diferente de 4 un trato diferente antes, esto es el producto final limpio.
brunomruiz
Ubicación: Bebedouro - SP

Notael Vie, 13 Jul 2018 3:07 pm

Como no sé qué versión estás utilizando pero hizo "" manual, sin utilizar la función de pivote (introducido en la versión 11).
Característica función analítica usada para decirme cual es la posición y número de la época que PIS / día., creo que de esta manera responda.

Código: Seleccionar todo
with COLETA AS (
select 'PIS1' PIS , '01/01/2018' DIA , '01:02' HORA FROM DUAL UNION ALL
select 'PIS1' PIS , '01/01/2018' DIA , '09:02' HORA FROM DUAL UNION ALL
select 'PIS1' PIS , '01/01/2018' DIA , '09:20' HORA FROM DUAL UNION ALL
select 'PIS1' PIS , '01/01/2018' DIA , '13:34' HORA FROM DUAL UNION ALL
select 'PIS2' PIS , '01/01/2018' DIA , '03:02' HORA FROM DUAL UNION ALL
select 'PIS2' PIS , '01/01/2018' DIA , '04:54' HORA FROM DUAL UNION ALL
select 'PIS2' PIS , '01/01/2018' DIA , '22:32' HORA FROM DUAL UNION ALL
select 'PIS2' PIS , '03/01/2018' DIA , '01:02' HORA FROM DUAL UNION ALL
select 'PIS2' PIS , '03/01/2018' DIA , '09:02' HORA FROM DUAL UNION ALL
select 'PIS2' PIS , '03/01/2018' DIA , '09:20' HORA FROM DUAL UNION ALL
select 'PIS2' PIS , '03/01/2018' DIA , '13:34' HORA FROM DUAL
)
, DADOS AS (
SELECT C.PIS
     , C.DIA
     , C.HORA
     , ROW_NUMBER() OVER (PARTITION BY C.PIS, C.DIA ORDER BY C.HORA) LINHA
  FROM COLETA C
  ) 
SELECT D.PIS
     , D.DIA
     , MAX(CASE WHEN LINHA = 1 THEN D.HORA END) HORA1
     , MAX(CASE WHEN LINHA = 2 THEN D.HORA END) HORA2
     , MAX(CASE WHEN LINHA = 3 THEN D.HORA END) HORA3
     , MAX(CASE WHEN LINHA = 4 THEN D.HORA END) HORA4
  FROM DADOS D
GROUP BY D.PIS
       , D.DIA
ORDER BY 1,2
DanielNN
Ubicación: Fortaleza - CE

att,

Daniel N.N.



Volver a PL/SQL

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados