Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Sou novo nesse tipo de progamação
Estou criando uma consulta onde a mesma variável contem informações diferentes para empenhos diferentes ex:
empenho 100 corresponde a quantidade de funcionários
empenho 101 corresponde a quantidade de horas
Quando executo a consulta as informações aparecem da seguinte maneira
COD_OBJETOCUSTO Quantidade Horas
1 148 9
2 148 1
3 148 6
4 148 2
5 148 2
6 148 0
7 148 540
8 148 60
9 148 360
10 148 120
11 148 120
12 148 0
Gostaria que ficasse da seguinte forma
Cod_objetocusto Quantidade Horas
1 148 9 540
2 148 1 60
3 148 6 360
4 148 2 120
5 148 2 120
6 148 0 0
eis a sql
select pmp.cod_objetocusto,
decode(pmp.cod_empenho,100,pmm.tecnica),
decode(pmp.cod_empenho,101,pmm.tecnica)
from planejamento.mvtoplanilhas pmp
,planejamento.mvtomespla pmm
where pmm.ano = &Ano
and pmm.mes = &Mes_Ini
and pmp.cod_grupoempresa = 1
and pmp.cod_empresa = &Empresa
and pmp.cod_filial = &Filial
and pmp.cod_empenho in (100,101)
and pmm.codmvtoplanilha = pmp.codmvtoplanilha
and pmp.cod_objetocusto = &Obj;
desde já agradeço.>
41 minutos atrás, Motta disse:
Formate melhor a saída que você quer , use o botão <>
Eu até tentei mas não consegui entender
É que as informações de horas esta saindo abaixo das linhas de Quantidade e gostaria que ficasse na mesma linha.
select pmp.cod_objetocusto,
-- O CASE "SELECIONA" O MAX GARANTE A SELEÇÃO , UM ARTIFICIO
MAX(CASE WHEN pmp.cod_empenho=100 THEN pmm.tecnica ELSE NULL END) QTD,
MAX(CASE WHEN pmp.cod_empenho=101 THEN pmm.tecnica ELSE NULL END) HORAS
from planejamento.mvtoplanilhas pmp
,planejamento.mvtomespla pmm
where pmm.ano = &Ano
and pmm.mes = &Mes_Ini
and pmp.cod_grupoempresa = 1
and pmp.cod_empresa = &Empresa
and pmp.cod_filial = &Filial
and pmp.cod_empenho in (100,101)
and pmm.codmvtoplanilha = pmp.codmvtoplanilha
and pmp.cod_objetocusto = &Obj
GROUP BY pmp.cod_objetocusto;>
19 minutos atrás, Motta disse:
select pmp.cod_objetocusto,
-- O CASE "SELECIONA" O MAX GARANTE A SELEÇÃO , UM ARTIFICIO
MAX(CASE WHEN pmp.cod_empenho=100 THEN pmm.tecnica ELSE NULL END) QTD,
MAX(CASE WHEN pmp.cod_empenho=101 THEN pmm.tecnica ELSE NULL END) HORAS
from planejamento.mvtoplanilhas pmp
,planejamento.mvtomespla pmm
where pmm.ano = &Ano
and pmm.mes = &Mes_Ini
and pmp.cod_grupoempresa = 1
and pmp.cod_empresa = &Empresa
and pmp.cod_filial = &Filial
and pmp.cod_empenho in (100,101)
and pmm.codmvtoplanilha = pmp.codmvtoplanilha
and pmp.cod_objetocusto = &Obj
GROUP BY pmp.cod_objetocusto;
grato, mas desculpe-me se não soube me expressar, as outras linhas abaixo também e não apenas o maior resultado. é que cada linha corresponde a uma função diferente com a quantidade de Homens e quantidade de Horas.
OBJ FUNCAO QTD HORAS
1 148 001740G 9 540
2 148 001810E 1 60
3 148 001850A 6 360
4 148 002830A 2 120
5 148 003280C 2 120Troque o MAX por um SUM
Formate melhor a saída que você quer , use o botão <>
Eu até tentei mas não consegui entender