none
AGRUPAR DATOS EN BASE A CAMPOS ESPECIFICOS RRS feed

  • Pregunta

  • Buenas dias.. 

    Tengo una consulta..
    En mi BD tengo una tabla en la cual tengo los siguientes campos..

    Placa, Hora, Vuelta..

    Ejemplo:

    Placa: A4S879 - Hora: 10:50 - Vuelta: 1
    Placa: A8R559 - Hora: 10:50 - Vuelta: 1
    Placa: A8R559 - Hora: 12:50 - Vuelta: 2
    Placa: A4S879 - Hora: 12:50 - Vuelta: 2
    Placa: A8R559 - Hora: 14:50 - Vuelta: 3
    Placa: A4S879 - Hora: 14:50 - Vuelta: 3

    Lo que yo quiero es mostrar la informacion.. algo similiar como lo hace el pivot..

    Placa      Vuelta1   Vuelta2   Vuelta3

    A4S879    10:50     12:50      14:50
    A8R559    10:50     12:50      14:50

    Intente hacerlo con pivot pero no tuve resultados favorables ya que
    pivot es para otro tipo de agrupamiento.. 
    Espero puedan ayudarme.. Gracias.. 


    Jokesito

    lunes, 18 de marzo de 2013 14:10

Respuestas

  • declare @tabla table
    (
      placa nvarchar(30) ,
      hora time ,
      vuelta int
    );
    insert  into @tabla
            ( placa, hora, vuelta )
    values
            ( N'A4S879', '10:50', 1 ),
            ( N'A8R559', '10:50', 1 ),
            ( N'A8R559', '12:50', 2 ),
            ( N'A4S879', '12:50', 2 ),
            ( N'A8R559', '14:50', 3 ),
            ( N'A4S879', '14:50', 3 )
    
    select
        *
    from
        (
          select
            placa ,
            hora ,
            vuelta
          from
            @tabla t
        ) source pivot ( max(source.hora) for vuelta in ( [1], [2], [3] ) ) as pivotable;

    Efectivamente la solucion es PIVOT, te paso el script con tablas temporales para que lo analices.. cuentanos que ta te va


    • Marcado como respuesta Jokesito lunes, 18 de marzo de 2013 15:07
    lunes, 18 de marzo de 2013 15:02
  • Source

    Es sólo un alias del conjunto de datos que produce 

    select
            placa ,
            hora ,
            vuelta
          from
            @tabla t

    puedes colocar lo que mas te guste ahi.. y pivot es la clausula reservada que se encarga de generar el pivot segun lo que especifiques dentro de su parentisis..

    • Marcado como respuesta Jokesito lunes, 18 de marzo de 2013 17:06
    lunes, 18 de marzo de 2013 16:43

Todas las respuestas

  • declare @tabla table
    (
      placa nvarchar(30) ,
      hora time ,
      vuelta int
    );
    insert  into @tabla
            ( placa, hora, vuelta )
    values
            ( N'A4S879', '10:50', 1 ),
            ( N'A8R559', '10:50', 1 ),
            ( N'A8R559', '12:50', 2 ),
            ( N'A4S879', '12:50', 2 ),
            ( N'A8R559', '14:50', 3 ),
            ( N'A4S879', '14:50', 3 )
    
    select
        *
    from
        (
          select
            placa ,
            hora ,
            vuelta
          from
            @tabla t
        ) source pivot ( max(source.hora) for vuelta in ( [1], [2], [3] ) ) as pivotable;

    Efectivamente la solucion es PIVOT, te paso el script con tablas temporales para que lo analices.. cuentanos que ta te va


    • Marcado como respuesta Jokesito lunes, 18 de marzo de 2013 15:07
    lunes, 18 de marzo de 2013 15:02
  • Realmente me funciono a la perfeccion..
    Muchisimas gracias por la ayuda...

    Antes que todo para que sirve:

    source pivot

    y te reitero nuevamente las gracias..

    Saludos..


    Jokesito

    lunes, 18 de marzo de 2013 15:09
  • Source

    Es sólo un alias del conjunto de datos que produce 

    select
            placa ,
            hora ,
            vuelta
          from
            @tabla t

    puedes colocar lo que mas te guste ahi.. y pivot es la clausula reservada que se encarga de generar el pivot segun lo que especifiques dentro de su parentisis..

    • Marcado como respuesta Jokesito lunes, 18 de marzo de 2013 17:06
    lunes, 18 de marzo de 2013 16:43
  • Muchas gracias por la leccion..
    Cada dia se va aprendiendo cosas buenas..

    Jokesito

    lunes, 18 de marzo de 2013 17:11