Query personalizada
08/09/2011
0
Ola pessoal, joia?
estou utilizando a instrução sql acima.
Me retorna o resultado do correto, porem preciso que cada mes venha em uma linha.
Começando de janeiro. O resultado esta o seguinte: L1_Conv1 L2_Conv1 L1_Conv2 L2_Conv2 L1_Conv3 L2_Conv3 L1_Conv4 L2_Conv4 mes 1 1 2 2 1 3 2 2 JAN 1 1 2 2 1 3 2 2 FEV
So vem o resultado referente ao mes que tem no banco de dados, mas eu preciso que venha todos os meses, e se não tiver nenhum valor venha "0". L1_Conv1 L2_Conv1 L1_Conv2 L2_Conv2 L1_Conv3 L2_Conv3 L1_Conv4 L2_Conv4 mes 1 1 2 2 1 3 2 2 JAN 1 1 2 2 1 3 2 2 FEV 0 0 0 0 0 0 0 0 MAR ... Preciso que venha todos os meses. Obrigado
SELECT COUNT(DISTINCT L1_lancaConv1)as L1_lancaConv1 ,COUNT(DISTINCT L2_lancaConv1) as L2_lancaConv1, COUNT(DISTINCT L1_lancaConv2) as L1_lancaConv2,COUNT(DISTINCT L2_lancaConv2) as L2_lancaConv2, COUNT(DISTINCT L1_lancaConv3) as L1_lancaConv3,COUNT(DISTINCT L2_lancaConv3) as L2_lancaConv3, COUNT(DISTINCT L1_lancaConv4) as L1_lancaConv4,COUNT(DISTINCT L2_lancaConv4) as L2_lancaConv4, COUNT(DISTINCT L1_lancaConv5) as L1_lancaConv5,COUNT(DISTINCT L2_lancaConv5) as L2_lancaConv5, CASE MONTH(Data) WHEN 1 THEN 'JAN' WHEN 2 THEN 'FEV' WHEN 3 THEN 'MAR' WHEN 4 THEN 'ABR' WHEN 5 THEN 'MAI' WHEN 6 THEN 'JUN' WHEN 7 THEN 'JUL' WHEN 8 THEN 'AGO' WHEN 9 THEN 'SET' WHEN 10 THEN 'OUT' WHEN 11 THEN 'NOV' WHEN 12 THEN 'DEZ' END as [Mes] FROM jornada where YEAR(Data) = @Ano group by MONTH(data)
Me retorna o resultado do correto, porem preciso que cada mes venha em uma linha.
Começando de janeiro. O resultado esta o seguinte: L1_Conv1 L2_Conv1 L1_Conv2 L2_Conv2 L1_Conv3 L2_Conv3 L1_Conv4 L2_Conv4 mes 1 1 2 2 1 3 2 2 JAN 1 1 2 2 1 3 2 2 FEV
So vem o resultado referente ao mes que tem no banco de dados, mas eu preciso que venha todos os meses, e se não tiver nenhum valor venha "0". L1_Conv1 L2_Conv1 L1_Conv2 L2_Conv2 L1_Conv3 L2_Conv3 L1_Conv4 L2_Conv4 mes 1 1 2 2 1 3 2 2 JAN 1 1 2 2 1 3 2 2 FEV 0 0 0 0 0 0 0 0 MAR ... Preciso que venha todos os meses. Obrigado
Pedro Barros
Curtir tópico
+ 0
Responder
Posts
18/10/2011
Gustavo Bretas
Pedro, vc ja conseguiu trazer os Meses em linhas?
Bom se ainda não tiver conseguido, eu fiz isso a pouco tempo, mas no Oracle, no SQL Server é bem mais simples de fazer, só não tenho como escrever ela pra vc porque não tenho o SQL Server disponível aqui no trabalho!
Mas faz assim:
Cria uma função que vc passa como parametro a Data Inicial e a Data Final, e a função retorne uma tabela com os campos Mês e Ano.
Eu não me lembo se tem como inserir direto no resultado, então se estiver errado corrige aí.
Dentro da função faz um While +/- assim, vamos coloar para pegar somente o mês e o ano para caso vc passe o dia inicial diferente não ter problema.
Só lembrando que tentei te passar a idéia, sei que funciona, mas não tenho o SQL Server aqui para te passar o Script rodando, vc terá que adaptar a sua necessidade!
Att.
Bom se ainda não tiver conseguido, eu fiz isso a pouco tempo, mas no Oracle, no SQL Server é bem mais simples de fazer, só não tenho como escrever ela pra vc porque não tenho o SQL Server disponível aqui no trabalho!
Mas faz assim:
Cria uma função que vc passa como parametro a Data Inicial e a Data Final, e a função retorne uma tabela com os campos Mês e Ano.
Eu não me lembo se tem como inserir direto no resultado, então se estiver errado corrige aí.
Dentro da função faz um While +/- assim, vamos coloar para pegar somente o mês e o ano para caso vc passe o dia inicial diferente não ter problema.
while CONVERT(VARCHAR, YEAR(@DTA_INI))+CONVERT(VARCHAR, MONTH(@DTA_INI)) < CONVERT(VARCHAR, YEAR(@DTA_FIM))+CONVERT(VARCHAR, MONTH(@DTA_FIM)) begin insert into return values (MONTH(@DTA_INI), YEAR(@DTA_INI)) DATEADD(MONTH, 1, @DTA_INI) end Depois é só fazer o select na função como se ela fosse uma tabela, [code]select * from fn_mes_ano(@DTA_INI, @DTA_FIM)
Só lembrando que tentei te passar a idéia, sei que funciona, mas não tenho o SQL Server aqui para te passar o Script rodando, vc terá que adaptar a sua necessidade!
Att.
Responder
Clique aqui para fazer login e interagir na Comunidade :)