none
columnas hacia el lado según campo distinct RRS feed

  • Pregunta

  • Hola a todos,

    Necesito de su ayuda, necesito realizar una consulta, pero que muestres las columnas hacia el costado según el campo "Tipo", en la imagen lo que tengo:

    Lo que necesito es hacer una consulta Distinct al campo "tipo", y que muestre el "estado"(estos son cuatro), y "total" por estado hacia los costado, es decir:

    ACADEMICO,Cerrado,73,Ingresado,1,Solucionado,0,En Proceso,0

    FINANCIERO,Cerrado,73,Ingresado,1,Solucionado,0,En Proceso,0

    LEGAL,Cerrado,73,Ingresado,1,Solucionado,0,En Proceso,0

    Espero haya sido claro en la explicación y me puedan ayudar, Gracias.

    Saludos desde Chile.

    
    martes, 20 de enero de 2015 15:08

Respuestas

  • Hola Alexis,

    Esto te servirá

    SELECT
    	tipo,
    	[Cerrado], [Ingresado], [Solucionado], [En Proceso]
    FROM
    	MiTabla
    PIVOT
    	(MAX(total) FOR estado IN ([Cerrado], [Ingresado], [Solucionado], [En Proceso])) AS TABLAPIVOT

    Si la solución propuesta atendió su consulta no olvide marcarla como respuesta.


    Willams Morales P.
    Arequipa - Perú

    martes, 20 de enero de 2015 16:14

Todas las respuestas

  • Hola Alexis,

    Entiendo tu requerimiento, pero ¿no es mejor que muestres los estados como columnas y debajo las cantidades? Algo como:

                           CERRADO    EN PROCESO    INGRESADO    SOLUCIONADO  

    -----------------------------------------------------------------------------------------

    ACADÉMICO         73                                             1   

    FINANCIERO         84                    1                                            4

    LEGAL                    4

    Si es lo que te sugiero me confirmas para ayudarte, puedes hacer uso del operador relacional PIVOT.

    Pero si es tal como muestras en tru requerimiento es sólo subconsultas

    SELECT
      A.Tipo,
      'Cerrado'
      IsNull((Select Total From Tabla Where (Tipo = 'Cerrado') And (Tipo = A.Tipo)),0)
      'Ingresado'
      IsNull((Select Total From Tabla Where (Tipo = 'Ingresado') And (Tipo = A.Tipo)),0)
      'Solucionado'
      IsNull((Select Total From Tabla Where (Tipo = 'Solucionado') And (Tipo = A.Tipo)),0)
      'En Proceso'
      IsNull((Select Total From Tabla Where (Tipo = 'En Proceso') And (Tipo = A.Tipo)),0)
    FROM
      Tabla A
    GROUP BY
      A.Tipo


    Si la solución propuesta atendió su consulta no olvide marcarla como respuesta.


    Willams Morales P.
    Arequipa - Perú
    martes, 20 de enero de 2015 15:15
  • HOla:

    si es así como expone Wiliam prueba a usar la pivot de esta manera.

    SELEC Tipo,Estado
    FROM mytabla
    PIVOT
    (SUM(Total) for Tipo
    IN ('Cerrado','Ingresado','Solucionado','En Proceso'))
    as PVT 
    order by Tipo
    saludos

    JM Claudio Dba/Consultor SQL/BI Pasiona - Spain

    • Propuesto como respuesta HunchbackMVP martes, 20 de enero de 2015 15:40
    martes, 20 de enero de 2015 15:23
  • Gracias Williams, creo que tu sugerencia me sirve, agradecería me dieras un ejemplo.

    Saludos

    martes, 20 de enero de 2015 15:58
  • Hola Alexis,

    Esto te servirá

    SELECT
    	tipo,
    	[Cerrado], [Ingresado], [Solucionado], [En Proceso]
    FROM
    	MiTabla
    PIVOT
    	(MAX(total) FOR estado IN ([Cerrado], [Ingresado], [Solucionado], [En Proceso])) AS TABLAPIVOT

    Si la solución propuesta atendió su consulta no olvide marcarla como respuesta.


    Willams Morales P.
    Arequipa - Perú

    martes, 20 de enero de 2015 16:14
  • Gracias Williams, me sirvio tu ayuda.

    Saludos.

    martes, 20 de enero de 2015 19:21