¿como transponer columnas y ocultar fila?

publicado por: Anonymous

el codigo que estoy utilizando:

select  
    ccc.Descripcion AS Grado,
    p.CodPersona AS Codigo,
    p.NombreCompleto AS Nombre,
    cc.Detalle AS Detalle,
    SUM(cc.Valor) AS Valor

from Cuenta cc
        inner join AlumnoDB.dbo.Alumno a on cc.IdAlumno = a.CodAlumno
        inner join AlumnoDB.dbo.Matricula m on cc.IdAlumno = m.CodAlumno
        inner join AlumnoDB.dbo.Curso ccc on m.CodCurso = ccc.CodCurso
        inner join AlumnoDB.dbo.Persona p on a.CodPersona = p.CodPersona

        where cc.Detalle is not null
        and cc.Valor != 0.00

        group by cc.Detalle, 
            ccc.Descripcion, 
            p.CodPersona,
            p.NombreCompleto

Me muestra este resultado:

introducir la descripción de la imagen aquí

que los resgitros de se vuelvan columas OJO: (ese resultado el agrupamiento de 12 registros, y solo habra 3(Descuento, mensualidad y registro) tipos de detalles para N registros) quiero que Descuento y mensualidad queden como columna y factura quede oculto.

ahora como puego mostrarlo asi:

introducir la descripción de la imagen aquí

solución

select  
    ccc.Descripcion     AS      Grado,
    p.CodPersona        AS      Codigo,
    p.NombreCompleto    AS      Nombre,
    SUM(CASE WHEN cc.Detalle = 'Mensualidad' THEN cc.Valor END) AS [Mensualidad],
    SUM(CASE WHEN cc.Detalle = 'Descuento' THEN cc.Valor END)*-1 AS [Descuento]

from Cuenta as cc
    inner join AlumnoDB.dbo.Alumno a on cc.IdAlumno = a.CodAlumno
    inner join AlumnoDB.dbo.Matricula m on cc.IdAlumno = m.CodAlumno
    inner join AlumnoDB.dbo.Curso ccc on m.CodCurso = ccc.CodCurso
    inner join AlumnoDB.dbo.Persona p on a.CodPersona = p.CodPersona

    WHERE cc.Detalle IS NOT NULL
            AND cc.Valor != 0.00
            AND cc.Detalle IN ( 'Mensualidad','Descuento')

    group by ccc.Descripcion, 
        p.CodPersona,
        p.NombreCompleto;

introducir la descripción de la imagen aquí

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *