Usuário com melhor resposta
Somando por ID

Pergunta
-
Prezados boa tarde, mas uma vez peço ajuda, vms la
Sentença
SELECT IDTRF,IDPAI,CODTRF,CAMPOLIVREVALOR2,CAMPOLIVREVALOR1 FROM MTRF WHERE IDPRJ = '389'
ORDER BY CODTRFResultado
Id Id_Pai Codigo campo1 campo2
1 1 001 NULL NULL
129 1 001.01 NULL NULL
131 129 001.01.001 10.0000 20.0000
133 129 001.01.002 20.0000 20.0000
135 129 001.01.003 30.0000 20.0000
141 129 001.01.004 0.0000 0.0000
144 129 001.01.005 0.0000 0.0000
8 1 001.02 NULL NULL
9 8 001.02.001 15.0000 20.0000Prezados vejam que o Id 1 tem varios Id_Pai, com os codigos '001.01,001.02 e esse por sua vez tem seus Id_Pai
001.01 Id 129 tem varios Id_Pai, eu tenho tb os campos 1 e 2, que tem valores, gostaria de poder somar esses campos com os valores
Ex:
1 1 001 75 NULL
129 1 001.01 60 NULL
131 129 001.01.001 10.0000 20.0000
133 129 001.01.002 20.0000 20.0000
135 129 001.01.003 30.0000 20.0000
141 129 001.01.004 0.0000 0.0000
144 129 001.01.005 0.0000 0.0000
8 1 001.02 15 NULL
9 8 001.02.001 15.0000 20.0000e assim tambem fazer para p Campo2, obrigado e todos pela ajuda.
Respostas
-
Ronnie,
Talvez seja possível, mas acredito que você terá que utilizar o group by!!!!
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário]- Marcado como Resposta Ronnie Von segunda-feira, 5 de julho de 2010 14:13
Todas as Respostas
-
Prezados bom dia, estou me virando aqui, para poder fazer essa sentença, consegui chegar, ate o momento para somar as Etapas, vejam a SQL
SELECT
mt.idtrf,
mt.idpai,
MT.CODTRF,
MT.NOME,
MT.CODUND,
MT.CAMPOLIVREVALOR2 AS [Qtd_Contrato],
isnull(MT.CAMPOLIVREVALOR2,
CASE WHEN mt.codcoligada = '1' THEN ( select sum (m.CAMPOLIVREVALOR2) from mtrf as m where m.idpai = mt.idtrf and m.idprj = '422')
ELSE 0 end )AS T
FROM MTRF AS MT
INNER JOIN MPRJ AS MP ON MP.CODCOLIGADA = MT.CODCOLIGADA AND MP.IDPRJ = MT.IDPRJ
AND MT.INDIRETO <> '1'
AND MP.idprj = '422'Resultado
1 1 1 r NULL NULL NULL 2 1 001.01 SERVIÇOS INICIAIS NULL NULL 34 3 2 001.01.001 Engenharia, VB 20 20 4 2 001.01.002 Levantamento VB 2 2 5 2 001.01.003 Canteiro de Obras VB 3 3 6 2 001.01.004 Mobilização VB 4 4 7 2 001.01.005 Desmobilização VB 5 5 8 1 001.02 PREPARO NULL NULL 6 9 8 001.02.001 Limpeza M2 6 6 10 1 001.03 RECUPERAÇÃO NULL NULL 70 11 10 001.03.001 Aquisição T 7 7 12 10 001.03.002 Carga das pedras T 8 8 13 10 001.03.003 Carga pedreira até a obra T 9 9 14 10 001.03.004 Transporte das Pedra T 10 10 15 10 001.03.005 Transporte até a obra T 11 11 16 10 001.03.006 Descarga no pulmão T 12 12 17 10 001.03.007 Descarga T 13 13 18 1 001.04 RECUPERAÇÃO NULL NULL 62 19 18 001.04.001 Lançamento M3 14 14 20 18 001.04.002 Controle Mês 15 15 21 18 001.04.003 Inspeções Mês 16 19 22 18 001.04.004 Execução UN 17 17 Pessoal as Etapas que esta em negrito eu consegui somar, porem eu gostaria de a Soma dessas Etapas aparecesse no item 001 que e a Obra
Obrigado a todos pela ajuda
-
Ronny,
Por acaso essa query será utilizada em um relatório?
Caso afirmativo, minha sugestão é trabalhar com quebras de grupo em seu relatório realizando as somatórias!!!!
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário] -
-
Ronnie,
Talvez seja possível, mas acredito que você terá que utilizar o group by!!!!
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário]- Marcado como Resposta Ronnie Von segunda-feira, 5 de julho de 2010 14:13