none
Subqueries!! RRS feed

  • Pergunta

  • essoal tenho a seguinte query abiaxo e no campo Taxas_aluno.ano preciso que traga como uma coluna contendo os dados do taxas_alunos.pertentual, alguém tem ideia de como faço?

    SELECT     TOP (100) PERCENT dbo.Taxas_Aluno.cod_escola, dbo.Taxas_Aluno.cod_aluno, dbo.Aluno.nome AS nome_aluno, dbo.Taxas_Aluno.cod_serie, dbo.Taxas_Aluno.ano, 
                          dbo.Taxas_Aluno.cod_servico, dbo.Taxas_Aluno.percentual, dbo.Aluno.endereco, dbo.Aluno.complemento, dbo.Aluno.bairro, dbo.Aluno.cidade, dbo.Aluno.uf, 
                          dbo.Aluno.CEP, dbo.Aluno.CPF_resp_legal, dbo.Aluno.nome_pai, dbo.Aluno.nome_mae
    FROM         dbo.Taxas_Aluno INNER JOIN
                          dbo.Aluno ON dbo.Taxas_Aluno.cod_aluno = dbo.Aluno.cod_aluno AND dbo.Taxas_Aluno.cod_escola = dbo.Aluno.cod_escola
    WHERE     (dbo.Taxas_Aluno.ano >= 2012) AND (dbo.Taxas_Aluno.cod_servico = 597 OR
                          dbo.Taxas_Aluno.cod_servico = 598)
    ORDER BY dbo.Taxas_Aluno.cod_escola, dbo.Taxas_Aluno.cod_aluno

    tentei fazer uam subquery como abaixo mas não deu certo:

    SELECT     TOP (100) PERCENT dbo.Taxas_Aluno.cod_escola, dbo.Taxas_Aluno.cod_aluno, dbo.Aluno.nome AS nome_aluno, dbo.Taxas_Aluno.cod_serie, dbo.Taxas_Aluno.ano, 
    					
    					(SELECT     dbo.Taxas_Aluno.cod_servico
    FROM         dbo.Taxas_Aluno
    WHERE (dbo.Taxas_Aluno.ano = 2012) AND ((dbo.Taxas_Aluno.cod_servico = 597) OR(dbo.Taxas_Aluno.cod_servico = 598))
          )AS '2012',
          					(SELECT     dbo.Taxas_Aluno.percentual
    FROM         dbo.Taxas_Aluno
    WHERE (dbo.Taxas_Aluno.ano = 2012) AND ((dbo.Taxas_Aluno.cod_servico = 597) OR(dbo.Taxas_Aluno.cod_servico = 598))
          )AS 'Percentual 2012',
          
          				(SELECT     dbo.Taxas_Aluno.cod_servico
    FROM         dbo.Taxas_Aluno
    WHERE (dbo.Taxas_Aluno.ano = 2013) AND ((dbo.Taxas_Aluno.cod_servico = 597) OR(dbo.Taxas_Aluno.cod_servico = 598))
          )AS '2013',   
                				(SELECT     dbo.Taxas_Aluno.percentual
    FROM         dbo.Taxas_Aluno
    WHERE (dbo.Taxas_Aluno.ano = 2013) AND ((dbo.Taxas_Aluno.cod_servico = 597) OR(dbo.Taxas_Aluno.cod_servico = 598))
          )AS 'Percentual 2013',    
          
                          dbo.Taxas_Aluno.cod_servico, dbo.Taxas_Aluno.percentual, dbo.Aluno.endereco, dbo.Aluno.complemento, dbo.Aluno.bairro, dbo.Aluno.cidade, dbo.Aluno.uf, 
                          dbo.Aluno.CEP, dbo.Aluno.CPF_resp_legal
    FROM         dbo.Taxas_Aluno INNER JOIN
                          dbo.Aluno ON dbo.Taxas_Aluno.cod_aluno = dbo.Aluno.cod_aluno AND dbo.Taxas_Aluno.cod_escola = dbo.Aluno.cod_escola
    
    WHERE     (dbo.Taxas_Aluno.ano >= 2012) 
    					   AND ((dbo.Taxas_Aluno.cod_servico = 597) 
    					   OR (dbo.Taxas_Aluno.cod_servico = 598))
                         
                           
    ORDER BY dbo.Taxas_Aluno.cod_escola, 
    dbo.Taxas_Aluno.cod_aluno

    Alguma dica?


    Moizés Cerqueira | MCP / MCTS SQL SERVER

    quarta-feira, 14 de novembro de 2012 19:16

Respostas

  • Boa noite,

    Não sei se entendi corretamente a questão, mas experimente desta forma:

    SELECT
        dbo.Taxas_Aluno.cod_escola, 
        dbo.Taxas_Aluno.cod_aluno, 
        dbo.Aluno.nome AS nome_aluno, 
        dbo.Taxas_Aluno.cod_serie, 
        dbo.Taxas_Aluno.ano, 
    					
        (case when dbo.Taxas_Aluno.ano = 2012 
             then dbo.Taxas_Aluno.cod_servico
             else null
        ) AS '2012',
    
        (case when dbo.Taxas_Aluno.ano = 2012 
             then dbo.Taxas_Aluno.percentual
             else null
        ) AS 'Percentual 2012',
          
        (case when dbo.Taxas_Aluno.ano = 2013
             then dbo.Taxas_Aluno.cod_servico
             else null
        ) AS '2013',   
    
        (case when dbo.Taxas_Aluno.ano = 2013
             then dbo.Taxas_Aluno.percentual
             else null
        ) AS 'Percentual 2013',    
          
        dbo.Taxas_Aluno.cod_servico, 
        dbo.Taxas_Aluno.percentual, 
        dbo.Aluno.endereco, 
        dbo.Aluno.complemento, 
        dbo.Aluno.bairro, 
        dbo.Aluno.cidade, 
        dbo.Aluno.uf, 
        dbo.Aluno.CEP, 
        dbo.Aluno.CPF_resp_legal
    FROM dbo.Taxas_Aluno 
    INNER JOIN dbo.Aluno 
        ON dbo.Taxas_Aluno.cod_aluno = dbo.Aluno.cod_aluno AND 
           dbo.Taxas_Aluno.cod_escola = dbo.Aluno.cod_escola
    
    WHERE (dbo.Taxas_Aluno.ano >= 2012) AND 
          ((dbo.Taxas_Aluno.cod_servico = 597) OR 
           (dbo.Taxas_Aluno.cod_servico = 598))
    
    ORDER BY 
        dbo.Taxas_Aluno.cod_escola, 
        dbo.Taxas_Aluno.cod_aluno

    Espero que seja útil.


    Assinatura: http://www.imoveisemexposicao.com.br

    quinta-feira, 15 de novembro de 2012 20:35