Usuário com melhor resposta
Montar Select

Pergunta
-
Pessoal,
Tenho 4 tabelas (tabela2011, tabela2010, tabela2009 e tabela2008) com os mesmos campos em cada (empresa, ano, trimestre, valor). Preciso fazer um select para mostrar os seguintes dados:
exemples de dados de uma tabela
Empresa | Ano | Trimestre | Valor
Vale | 2010 | 1 | 2.000,00
Vale | 2010 | 2 | 3.000,00
Preciso montar uma select que retorne as seguintes colunas
Empresa | Valor2010_Trimestre1 | Valor2010_Trimestre2 | Valor2010_Trimestre3 | Valor2011_Trimestre1 | Valor2011_Trimestre2 | Valor2011_Trimestre3
sENDO QUE Valor2010_Trimestre1 não existe em nenhuma das tabelas, teria que ser um where com trimestre = 1 ou 2 ou 3 e ano = 2010....
Entenderam?
Luiz Henroqie
- Movido Seilor Bonancio Junior quinta-feira, 17 de janeiro de 2013 10:10
Respostas
-
Olá luiz,
A forma que vou colocar abaixo ,não seria a melhor ,mas resolveria seu problema. Basta adicionar agora , as unions para as tabelas 2009 e 2008.
SELECT X.EMPRESA
,SUM(X.VALOR2011_TRIMESTRE1) AS VALOR2011_TRIMESTRE1
,SUM(X.VALOR2011_TRIMESTRE2) AS VALOR2011_TRIMESTRE2
,SUM(X.VALOR2011_TRIMESTRE3) AS VALOR2011_TRIMESTRE3
,SUM(X.VALOR2011_TRIMESTRE4) AS VALOR2011_TRIMESTRE4
,SUM(X.VALOR2010_TRIMESTRE1) AS VALOR2010_TRIMESTRE1
,SUM(X.VALOR2010_TRIMESTRE2) AS VALOR2010_TRIMESTRE2
,SUM(X.VALOR2010_TRIMESTRE3) AS VALOR2010_TRIMESTRE3
,SUM(X.VALOR2010_TRIMESTRE4) AS VALOR2010_TRIMESTRE4
,SUM(X.VALOR2009_TRIMESTRE1) AS VALOR2009_TRIMESTRE1
,SUM(X.VALOR2009_TRIMESTRE2) AS VALOR2009_TRIMESTRE2
,SUM(X.VALOR2009_TRIMESTRE3) AS VALOR2009_TRIMESTRE3
,SUM(X.VALOR2009_TRIMESTRE4) AS VALOR2009_TRIMESTRE4
,SUM(X.VALOR2008_TRIMESTRE1) AS VALOR2008_TRIMESTRE1
,SUM(X.VALOR2008_TRIMESTRE2) AS VALOR2008_TRIMESTRE2
,SUM(X.VALOR2008_TRIMESTRE3) AS VALOR2008_TRIMESTRE3
,SUM(X.VALOR2008_TRIMESTRE4) AS VALOR2008_TRIMESTRE4
FROM (
SELECT A.EMPRESA AS EMPRESA
,SUM(CASE WHEN A.TRIMESTRE = 1 AND A.ANO = 2011
THEN A.VALOR
ELSE 0.00
END) AS VALOR2011_TRIMESTRE1
,SUM(CASE WHEN A.TRIMESTRE = 2 AND A.ANO = 2011
THEN A.VALOR
ELSE 0.00
END) AS VALOR2011_TRIMESTRE2
,SUM(CASE WHEN A.TRIMESTRE = 3 AND A.ANO = 2011
THEN A.VALOR
ELSE 0.00
END) AS VALOR2011_TRIMESTRE3
,SUM(CASE WHEN A.TRIMESTRE = 4 AND A.ANO = 2011
THEN A.VALOR
ELSE 0.00
END) AS VALOR2011_TRIMESTRE4
,0.00 AS VALOR2010_TRIMESTRE1
,0.00 AS VALOR2010_TRIMESTRE2
,0.00 AS VALOR2010_TRIMESTRE3
,0.00 AS VALOR2010_TRIMESTRE4
,0.00 AS VALOR2009_TRIMESTRE1
,0.00 AS VALOR2009_TRIMESTRE2
,0.00 AS VALOR2009_TRIMESTRE3
,0.00 AS VALOR2009_TRIMESTRE4
,0.00 AS VALOR2008_TRIMESTRE1
,0.00 AS VALOR2008_TRIMESTRE2
,0.00 AS VALOR2008_TRIMESTRE3
,0.00 AS VALOR2008_TRIMESTRE4
FROM TABELA2011 A WITH(NOLOCK)
GROUP BY A.EMPRESA
UNION ALL
SELECT A.EMPRESA AS EMPRESA
,0.00 AS VALOR2011_TRIMESTRE1
,0.00 AS VALOR2011_TRIMESTRE2
,0.00 AS VALOR2011_TRIMESTRE3
,0.00 AS VALOR2011_TRIMESTRE4
,SUM(CASE WHEN A.TRIMESTRE = 1 AND A.ANO = 2010
THEN A.VALOR
ELSE 0.00
END) AS VALOR2010_TRIMESTRE1
,SUM(CASE WHEN A.TRIMESTRE = 2 AND A.ANO = 2010
THEN A.VALOR
ELSE 0.00
END) AS VALOR2010_TRIMESTRE2
,SUM(CASE WHEN A.TRIMESTRE = 3 AND A.ANO = 2010
THEN A.VALOR
ELSE 0.00
END) AS VALOR2010_TRIMESTRE3
,SUM(CASE WHEN A.TRIMESTRE = 4 AND A.ANO = 2010
THEN A.VALOR
ELSE 0.00
END) AS VALOR2010_TRIMESTRE4
,0.00 AS VALOR2009_TRIMESTRE1
,0.00 AS VALOR2009_TRIMESTRE2
,0.00 AS VALOR2009_TRIMESTRE3
,0.00 AS VALOR2009_TRIMESTRE4
,0.00 AS VALOR2008_TRIMESTRE1
,0.00 AS VALOR2008_TRIMESTRE2
,0.00 AS VALOR2008_TRIMESTRE3
,0.00 AS VALOR2008_TRIMESTRE4
FROM TABELA2010 A WITH(NOLOCK)
GROUP BY A.EMPRESA
)X
GROUP BY X.EMPRESAAbraços.
- Marcado como Resposta Luizhcota terça-feira, 22 de janeiro de 2013 05:42
-
Luiz,
Bom dia,
O problema estava no Group by , pois pelo que vi, você adicionou campos como CONTA, no qual, na tabela2010 e tabela2010, eles são diferente, logo ,retornaria 4 linhas no seu resultado. Desta forma, tratei a conta com substring no group by e na Select, e retornou conforme seu exemplo.
Veja abaixo:
SELECT X.CODIGO AS CODIGO
,X.EMPRESA AS EMPRESA
,SUBSTRING(X.CONTA,5,15) AS CONTA
,X.NOME AS NOME
,SUM(X.VALOR2010_TRIMESTRE1) AS VALOR2010_TRIMESTRE1
,SUM(X.VALOR2010_TRIMESTRE2) AS VALOR2010_TRIMESTRE2
,SUM(X.VALOR2010_TRIMESTRE3) AS VALOR2010_TRIMESTRE3
,SUM(X.VALOR2010_TRIMESTRE4) AS VALOR2010_TRIMESTRE4
,SUM(X.VALOR2009_TRIMESTRE1) AS VALOR2009_TRIMESTRE1
,SUM(X.VALOR2009_TRIMESTRE2) AS VALOR2009_TRIMESTRE2
,SUM(X.VALOR2009_TRIMESTRE3) AS VALOR2009_TRIMESTRE3
,SUM(X.VALOR2009_TRIMESTRE4) AS VALOR2009_TRIMESTRE4
FROM (
SELECT A.CODIGO AS CODIGO
,A.EMPRESA AS EMPRESA
,A.CONTA AS CONTA
,A.NOME AS NOME
,SUM(CASE WHEN A.TRIMESTRE = 1 AND A.ANO = 2010
THEN A.VALOR
ELSE 0.00
END) AS VALOR2010_TRIMESTRE1
,SUM(CASE WHEN A.TRIMESTRE = 2 AND A.ANO = 2010
THEN A.VALOR
ELSE 0.00
END) AS VALOR2010_TRIMESTRE2
,SUM(CASE WHEN A.TRIMESTRE = 3 AND A.ANO = 2010
THEN A.VALOR
ELSE 0.00
END) AS VALOR2010_TRIMESTRE3
,SUM(CASE WHEN A.TRIMESTRE = 4 AND A.ANO = 2010
THEN A.VALOR
ELSE 0.00
END) AS VALOR2010_TRIMESTRE4
,0.00 AS VALOR2009_TRIMESTRE1
,0.00 AS VALOR2009_TRIMESTRE2
,0.00 AS VALOR2009_TRIMESTRE3
,0.00 AS VALOR2009_TRIMESTRE4
FROM TABELA2010 A WITH(NOLOCK)
GROUP BY A.EMPRESA,A.CODIGO,A.CONTA,A.NOME
UNION ALL
SELECT A.CODIGO AS CODIGO
,A.EMPRESA AS EMPRESA
,A.CONTA AS CONTA
,A.NOME AS NOME
,0.00 AS VALOR2010_TRIMESTRE1
,0.00 AS VALOR2010_TRIMESTRE2
,0.00 AS VALOR2010_TRIMESTRE3
,0.00 AS VALOR2010_TRIMESTRE4
,SUM(CASE WHEN A.TRIMESTRE = 1 AND A.ANO = 2009
THEN A.VALOR
ELSE 0.00
END) AS VALOR2009_TRIMESTRE1
,SUM(CASE WHEN A.TRIMESTRE = 2 AND A.ANO = 2009
THEN A.VALOR
ELSE 0.00
END) AS VALOR2009_TRIMESTRE2
,SUM(CASE WHEN A.TRIMESTRE = 3 AND A.ANO = 2009
THEN A.VALOR
ELSE 0.00
END) AS VALOR2009_TRIMESTRE3
,SUM(CASE WHEN A.TRIMESTRE = 4 AND A.ANO = 2009
THEN A.VALOR
ELSE 0.00
END) AS VALOR2009_TRIMESTRE4
FROM TABELA2009 A WITH(NOLOCK)
GROUP BY A.EMPRESA,A.CODIGO,A.CONTA,A.NOME
)X
GROUP BY X.CODIGO
,X.EMPRESA
,SUBSTRING(X.CONTA,5,15)
,X.NOME- Marcado como Resposta Ricardo Russo segunda-feira, 21 de janeiro de 2013 11:50
-
Olá Luiz Henrique,
Tente dessa forma:
Declare @Dados Table ( [Codigo] [int], [Empresa] [varchar](50) NULL, [Trimestre] [int] NULL, [Ano] [int] NULL, [Conta] [varchar](50) NULL, [NomeConta] [varchar](50) NULL, [Valor] [decimal](6, 2) NULL ); Insert Into @Dados Select * From [dbo].[Tabela2011]; Insert Into @Dados Select * From [dbo].[Tabela2010]; Insert Into @Dados Select * From [dbo].[Tabela2009]; Insert Into @Dados Select * From [dbo].[Tabela2008]; Select Codigo, Empresa, Conta, NomeConta, Sum(Case When Trimestre = 4 And Ano = 2011 Then Valor Else 0 End) "4 Trimestre / 2011", Sum(Case When Trimestre = 3 And Ano = 2011 Then Valor Else 0 End) "3 Trimestre / 2011", Sum(Case When Trimestre = 2 And Ano = 2011 Then Valor Else 0 End) "2 Trimestre / 2011" /*Continar o case para cada periodo que for necessário*/ From @Dados Group By Codigo, Empresa, Conta, NomeConta;
Peterson Roberto Oliveira Seridonio
Desenvolvedor C#
MCTS Windows 7- Editado Peterson Roberto Oliveira Seridonio sexta-feira, 18 de janeiro de 2013 15:08 Alteração na sql
- Marcado como Resposta Ricardo Russo segunda-feira, 21 de janeiro de 2013 11:50
Todas as Respostas
-
Olá Luiz...
A solução é utilizar a cláusula CASE.
Segue um exemplo (tirado daqui) que vai clarear suas idéias.
SELECT nome = CASE tppessoa
WHEN 1 THEN ( SELECT c.nome
FROM cliente c
WHERE c.cdcliente = p.cdcliente
)
WHEN 2 THEN ( SELECT f.nome
FROM fornecedor f
WHERE f.cdfornecedor = p.cdfornecedor
)
ELSE ''
END
FROM pessoa p
Espero ter lhe ajudado.
Abraço !
Não esqueça de marcar o post como útil caso tenha te ajudado.
-
Olá luiz,
A forma que vou colocar abaixo ,não seria a melhor ,mas resolveria seu problema. Basta adicionar agora , as unions para as tabelas 2009 e 2008.
SELECT X.EMPRESA
,SUM(X.VALOR2011_TRIMESTRE1) AS VALOR2011_TRIMESTRE1
,SUM(X.VALOR2011_TRIMESTRE2) AS VALOR2011_TRIMESTRE2
,SUM(X.VALOR2011_TRIMESTRE3) AS VALOR2011_TRIMESTRE3
,SUM(X.VALOR2011_TRIMESTRE4) AS VALOR2011_TRIMESTRE4
,SUM(X.VALOR2010_TRIMESTRE1) AS VALOR2010_TRIMESTRE1
,SUM(X.VALOR2010_TRIMESTRE2) AS VALOR2010_TRIMESTRE2
,SUM(X.VALOR2010_TRIMESTRE3) AS VALOR2010_TRIMESTRE3
,SUM(X.VALOR2010_TRIMESTRE4) AS VALOR2010_TRIMESTRE4
,SUM(X.VALOR2009_TRIMESTRE1) AS VALOR2009_TRIMESTRE1
,SUM(X.VALOR2009_TRIMESTRE2) AS VALOR2009_TRIMESTRE2
,SUM(X.VALOR2009_TRIMESTRE3) AS VALOR2009_TRIMESTRE3
,SUM(X.VALOR2009_TRIMESTRE4) AS VALOR2009_TRIMESTRE4
,SUM(X.VALOR2008_TRIMESTRE1) AS VALOR2008_TRIMESTRE1
,SUM(X.VALOR2008_TRIMESTRE2) AS VALOR2008_TRIMESTRE2
,SUM(X.VALOR2008_TRIMESTRE3) AS VALOR2008_TRIMESTRE3
,SUM(X.VALOR2008_TRIMESTRE4) AS VALOR2008_TRIMESTRE4
FROM (
SELECT A.EMPRESA AS EMPRESA
,SUM(CASE WHEN A.TRIMESTRE = 1 AND A.ANO = 2011
THEN A.VALOR
ELSE 0.00
END) AS VALOR2011_TRIMESTRE1
,SUM(CASE WHEN A.TRIMESTRE = 2 AND A.ANO = 2011
THEN A.VALOR
ELSE 0.00
END) AS VALOR2011_TRIMESTRE2
,SUM(CASE WHEN A.TRIMESTRE = 3 AND A.ANO = 2011
THEN A.VALOR
ELSE 0.00
END) AS VALOR2011_TRIMESTRE3
,SUM(CASE WHEN A.TRIMESTRE = 4 AND A.ANO = 2011
THEN A.VALOR
ELSE 0.00
END) AS VALOR2011_TRIMESTRE4
,0.00 AS VALOR2010_TRIMESTRE1
,0.00 AS VALOR2010_TRIMESTRE2
,0.00 AS VALOR2010_TRIMESTRE3
,0.00 AS VALOR2010_TRIMESTRE4
,0.00 AS VALOR2009_TRIMESTRE1
,0.00 AS VALOR2009_TRIMESTRE2
,0.00 AS VALOR2009_TRIMESTRE3
,0.00 AS VALOR2009_TRIMESTRE4
,0.00 AS VALOR2008_TRIMESTRE1
,0.00 AS VALOR2008_TRIMESTRE2
,0.00 AS VALOR2008_TRIMESTRE3
,0.00 AS VALOR2008_TRIMESTRE4
FROM TABELA2011 A WITH(NOLOCK)
GROUP BY A.EMPRESA
UNION ALL
SELECT A.EMPRESA AS EMPRESA
,0.00 AS VALOR2011_TRIMESTRE1
,0.00 AS VALOR2011_TRIMESTRE2
,0.00 AS VALOR2011_TRIMESTRE3
,0.00 AS VALOR2011_TRIMESTRE4
,SUM(CASE WHEN A.TRIMESTRE = 1 AND A.ANO = 2010
THEN A.VALOR
ELSE 0.00
END) AS VALOR2010_TRIMESTRE1
,SUM(CASE WHEN A.TRIMESTRE = 2 AND A.ANO = 2010
THEN A.VALOR
ELSE 0.00
END) AS VALOR2010_TRIMESTRE2
,SUM(CASE WHEN A.TRIMESTRE = 3 AND A.ANO = 2010
THEN A.VALOR
ELSE 0.00
END) AS VALOR2010_TRIMESTRE3
,SUM(CASE WHEN A.TRIMESTRE = 4 AND A.ANO = 2010
THEN A.VALOR
ELSE 0.00
END) AS VALOR2010_TRIMESTRE4
,0.00 AS VALOR2009_TRIMESTRE1
,0.00 AS VALOR2009_TRIMESTRE2
,0.00 AS VALOR2009_TRIMESTRE3
,0.00 AS VALOR2009_TRIMESTRE4
,0.00 AS VALOR2008_TRIMESTRE1
,0.00 AS VALOR2008_TRIMESTRE2
,0.00 AS VALOR2008_TRIMESTRE3
,0.00 AS VALOR2008_TRIMESTRE4
FROM TABELA2010 A WITH(NOLOCK)
GROUP BY A.EMPRESA
)X
GROUP BY X.EMPRESAAbraços.
- Marcado como Resposta Luizhcota terça-feira, 22 de janeiro de 2013 05:42
-
Rafael,
O seu chegou mais proximo, porém temos alguns problema.
Vou colocar mais exemplos para você entender.
Tabela2010
Codigo Empresa Trimestre Ano Conta Nome Valor 1 Vale 1 2010 10.0.0.00.00.00 ATIVO TOTAL 100 1 Vale 2 2010 10.0.0.00.00.00 ATIVO TOTAL 200 1 Vale 3 2010 10.0.0.00.00.00 ATIVO TOTAL 300 1 Vale 4 2010 10.0.0.00.00.00 ATIVO TOTAL 400 2 Petro 1 2010 10.0.0.00.00.00 ATIVO TOTAL 600 2 Petro 2 2010 10.0.0.00.00.00 ATIVO TOTAL 700 2 Petro 3 2010 10.0.0.00.00.00 ATIVO TOTAL 800 2 Petro 4 2010 10.0.0.00.00.00 ATIVO TOTAL 900 Tabela 2009
Codigo Empresa Trimestre Ano Conta Nome Valor 1 Vale 1 2009 10.0.0.00.00.00 ATIVO TOTAL 500 1 Vale 2 2009 10.0.0.00.00.00 ATIVO TOTAL 600 1 Vale 3 2009 10.0.0.00.00.00 ATIVO TOTAL 700 1 Vale 4 2009 10.0.0.00.00.00 ATIVO TOTAL 800 2 Petro 1 2009 10.0.0.00.00.00 ATIVO TOTAL 100 2 Petro 2 2009 10.0.0.00.00.00 ATIVO TOTAL 200 2 Petro 3 2009 10.0.0.00.00.00 ATIVO TOTAL 300 2 Petro 4 2009 10.0.0.00.00.00 ATIVO TOTAL 400 Resultado que eu preciso
Codigo Empresa Conta Nome Ano2010_Trimestre1 Ano2010_Trimestre2 Ano2010_Trimestre3 Ano2010_Trimestre4 Ano2009_Trimestre1 Ano2009_Trimestre2 Ano2009_Trimestre3 Ano2009_Trimestre4 1 Vale 10.0.0.00.00.00 ATIVO TOTAL 100 200 300 400 500 600 700 800 2 Petro 10.0.0.00.00.00 ATIVO TOTAL 500 600 700 800 100 200 300 400 Luiz Henroqie
-
Luiz,
Bom dia,
O problema estava no Group by , pois pelo que vi, você adicionou campos como CONTA, no qual, na tabela2010 e tabela2010, eles são diferente, logo ,retornaria 4 linhas no seu resultado. Desta forma, tratei a conta com substring no group by e na Select, e retornou conforme seu exemplo.
Veja abaixo:
SELECT X.CODIGO AS CODIGO
,X.EMPRESA AS EMPRESA
,SUBSTRING(X.CONTA,5,15) AS CONTA
,X.NOME AS NOME
,SUM(X.VALOR2010_TRIMESTRE1) AS VALOR2010_TRIMESTRE1
,SUM(X.VALOR2010_TRIMESTRE2) AS VALOR2010_TRIMESTRE2
,SUM(X.VALOR2010_TRIMESTRE3) AS VALOR2010_TRIMESTRE3
,SUM(X.VALOR2010_TRIMESTRE4) AS VALOR2010_TRIMESTRE4
,SUM(X.VALOR2009_TRIMESTRE1) AS VALOR2009_TRIMESTRE1
,SUM(X.VALOR2009_TRIMESTRE2) AS VALOR2009_TRIMESTRE2
,SUM(X.VALOR2009_TRIMESTRE3) AS VALOR2009_TRIMESTRE3
,SUM(X.VALOR2009_TRIMESTRE4) AS VALOR2009_TRIMESTRE4
FROM (
SELECT A.CODIGO AS CODIGO
,A.EMPRESA AS EMPRESA
,A.CONTA AS CONTA
,A.NOME AS NOME
,SUM(CASE WHEN A.TRIMESTRE = 1 AND A.ANO = 2010
THEN A.VALOR
ELSE 0.00
END) AS VALOR2010_TRIMESTRE1
,SUM(CASE WHEN A.TRIMESTRE = 2 AND A.ANO = 2010
THEN A.VALOR
ELSE 0.00
END) AS VALOR2010_TRIMESTRE2
,SUM(CASE WHEN A.TRIMESTRE = 3 AND A.ANO = 2010
THEN A.VALOR
ELSE 0.00
END) AS VALOR2010_TRIMESTRE3
,SUM(CASE WHEN A.TRIMESTRE = 4 AND A.ANO = 2010
THEN A.VALOR
ELSE 0.00
END) AS VALOR2010_TRIMESTRE4
,0.00 AS VALOR2009_TRIMESTRE1
,0.00 AS VALOR2009_TRIMESTRE2
,0.00 AS VALOR2009_TRIMESTRE3
,0.00 AS VALOR2009_TRIMESTRE4
FROM TABELA2010 A WITH(NOLOCK)
GROUP BY A.EMPRESA,A.CODIGO,A.CONTA,A.NOME
UNION ALL
SELECT A.CODIGO AS CODIGO
,A.EMPRESA AS EMPRESA
,A.CONTA AS CONTA
,A.NOME AS NOME
,0.00 AS VALOR2010_TRIMESTRE1
,0.00 AS VALOR2010_TRIMESTRE2
,0.00 AS VALOR2010_TRIMESTRE3
,0.00 AS VALOR2010_TRIMESTRE4
,SUM(CASE WHEN A.TRIMESTRE = 1 AND A.ANO = 2009
THEN A.VALOR
ELSE 0.00
END) AS VALOR2009_TRIMESTRE1
,SUM(CASE WHEN A.TRIMESTRE = 2 AND A.ANO = 2009
THEN A.VALOR
ELSE 0.00
END) AS VALOR2009_TRIMESTRE2
,SUM(CASE WHEN A.TRIMESTRE = 3 AND A.ANO = 2009
THEN A.VALOR
ELSE 0.00
END) AS VALOR2009_TRIMESTRE3
,SUM(CASE WHEN A.TRIMESTRE = 4 AND A.ANO = 2009
THEN A.VALOR
ELSE 0.00
END) AS VALOR2009_TRIMESTRE4
FROM TABELA2009 A WITH(NOLOCK)
GROUP BY A.EMPRESA,A.CODIGO,A.CONTA,A.NOME
)X
GROUP BY X.CODIGO
,X.EMPRESA
,SUBSTRING(X.CONTA,5,15)
,X.NOME- Marcado como Resposta Ricardo Russo segunda-feira, 21 de janeiro de 2013 11:50
-
Olá Luiz Henrique,
Tente dessa forma:
Declare @Dados Table ( [Codigo] [int], [Empresa] [varchar](50) NULL, [Trimestre] [int] NULL, [Ano] [int] NULL, [Conta] [varchar](50) NULL, [NomeConta] [varchar](50) NULL, [Valor] [decimal](6, 2) NULL ); Insert Into @Dados Select * From [dbo].[Tabela2011]; Insert Into @Dados Select * From [dbo].[Tabela2010]; Insert Into @Dados Select * From [dbo].[Tabela2009]; Insert Into @Dados Select * From [dbo].[Tabela2008]; Select Codigo, Empresa, Conta, NomeConta, Sum(Case When Trimestre = 4 And Ano = 2011 Then Valor Else 0 End) "4 Trimestre / 2011", Sum(Case When Trimestre = 3 And Ano = 2011 Then Valor Else 0 End) "3 Trimestre / 2011", Sum(Case When Trimestre = 2 And Ano = 2011 Then Valor Else 0 End) "2 Trimestre / 2011" /*Continar o case para cada periodo que for necessário*/ From @Dados Group By Codigo, Empresa, Conta, NomeConta;
Peterson Roberto Oliveira Seridonio
Desenvolvedor C#
MCTS Windows 7- Editado Peterson Roberto Oliveira Seridonio sexta-feira, 18 de janeiro de 2013 15:08 Alteração na sql
- Marcado como Resposta Ricardo Russo segunda-feira, 21 de janeiro de 2013 11:50