none
SQL PIVOT de tres columnas RRS feed

  • Pregunta

  • Hola.

    Estoy intentando realizar un cambiar la posición del resultado de una consulta de la siguiente consulta:

     SELECT C.PK_COMPA,F.MONTHID,
           FORMAT(Sum(F.IMPORTE),'##,###.00','en-US') As [Total activo 201806]
      FROM FACT_CNSF F
           inner join CAT_CUENTAS CU On F.ID_CUENTA = CU.ID_CUENTA
           inner join CAT_COMPA C On C.ID_COMPA = F.ID_COMPA
      WHERE CU.ID_CUENTA_RR7 Like '1%'
            And F.VERSION_ID = 1
            And F.MONTHID in (201806,201809,201812,201903,201906)
            And C.GRUPO_TIPO_COMPA = 'Sector Asegurador y Afianzador'
            AND f.ID_OPERACION = 112
            AND C.PK_COMPA in ('0001S','0001F','0701H','0901P')
      GROUP BY C.PK_COMPA,F.MONTHID
     ORDER BY MONTHID

    Y lo que busco es que el resultado sea de la siguiente manera:

    Lo que tengo hasta ahorita es algo asi, pero no logro el resultado deseado.

    SELECT * FROM
    ( SELECT C.PK_COMPA,F.MONTHID,
           FORMAT(Sum(F.IMPORTE),'##,###.00','en-US') As [Total activo 201806]
      FROM FACT_CNSF F
           inner join CAT_CUENTAS CU On F.ID_CUENTA = CU.ID_CUENTA
           inner join CAT_COMPA C On C.ID_COMPA = F.ID_COMPA
      WHERE CU.ID_CUENTA_RR7 Like '1%'
            And F.VERSION_ID = 1
            And F.MONTHID in (201806,201809,201812,201903,201906)
            And C.GRUPO_TIPO_COMPA = 'Sector Asegurador y Afianzador'
            AND f.ID_OPERACION = 112
            AND C.PK_COMPA in ('0001S','0001F','0701H','0901P')
      GROUP BY C.PK_COMPA,F.MONTHID
     ORDER BY MONTHID
      
       ) T
       PIVOT
       (
       (FORMAT(Sum(IMPORTE),'##,###.00','en-US')
       Sum(IMPORTE)
       FOR MONTHID IN ('201806',201809,201812,201903,201806) AS P


    Mgm

    jueves, 24 de octubre de 2019 15:10

Respuestas

  • Hola Mgm:

    SELECT P.* FROM
    ( SELECT C.PK_COMPA,F.MONTHID,
           Sum(F.IMPORTE) As [Total activo 201806]
      FROM FACT_CNSF F
           inner join CAT_CUENTAS CU On F.ID_CUENTA = CU.ID_CUENTA
           inner join CAT_COMPA C On C.ID_COMPA = F.ID_COMPA
      WHERE CU.ID_CUENTA_RR7 Like '1%'
            And F.VERSION_ID = 1
            And F.MONTHID in (201806,201809,201812,201903,201906)
            And C.GRUPO_TIPO_COMPA = 'Sector Asegurador y Afianzador'
            AND f.ID_OPERACION = 112
            AND C.PK_COMPA in ('0001S','0001F','0701H','0901P')
      GROUP BY C.PK_COMPA,F.MONTHID
     ORDER BY MONTHID
      
       ) T
       PIVOT
       (
       Sum([TOTAL ACTIVO 201806])
       FOR MONTHID IN ([201806],[201809],[201812],[201903],[201806]) AS P

    Quita el format del origen de datos, y pónselo al SELECT p.*, donde el asterisco son las columnas que te resuelve la query. De modo que tendrás p.PKCOMPRA, FORMAT...p.[201806] ....

    • Marcado como respuesta Slafco jueves, 24 de octubre de 2019 15:41
    jueves, 24 de octubre de 2019 15:36

Todas las respuestas

  • Hola Mgm:

    SELECT P.* FROM
    ( SELECT C.PK_COMPA,F.MONTHID,
           Sum(F.IMPORTE) As [Total activo 201806]
      FROM FACT_CNSF F
           inner join CAT_CUENTAS CU On F.ID_CUENTA = CU.ID_CUENTA
           inner join CAT_COMPA C On C.ID_COMPA = F.ID_COMPA
      WHERE CU.ID_CUENTA_RR7 Like '1%'
            And F.VERSION_ID = 1
            And F.MONTHID in (201806,201809,201812,201903,201906)
            And C.GRUPO_TIPO_COMPA = 'Sector Asegurador y Afianzador'
            AND f.ID_OPERACION = 112
            AND C.PK_COMPA in ('0001S','0001F','0701H','0901P')
      GROUP BY C.PK_COMPA,F.MONTHID
     ORDER BY MONTHID
      
       ) T
       PIVOT
       (
       Sum([TOTAL ACTIVO 201806])
       FOR MONTHID IN ([201806],[201809],[201812],[201903],[201806]) AS P

    Quita el format del origen de datos, y pónselo al SELECT p.*, donde el asterisco son las columnas que te resuelve la query. De modo que tendrás p.PKCOMPRA, FORMAT...p.[201806] ....

    • Marcado como respuesta Slafco jueves, 24 de octubre de 2019 15:41
    jueves, 24 de octubre de 2019 15:36
  • Al parecer estaba olvidando el alias que ya le haba dado a la columna importe.

    Gracias Javi


    Mgm

    jueves, 24 de octubre de 2019 15:43
  • De nada
    jueves, 24 de octubre de 2019 15:58