Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal estou precisando fazer uma consulta a tres tabelas com soma de campo horas de duas delas e a terceira que server pra mostra quem nao fez nada
segue a consulta que esta com erro pois esta repetindo os dados
SELECT distinct CIDADE, NOME, PROFISSAO, email,
RIGHT('0' + CONVERT(VARCHAR, MINUTOS / 60), 2) + ':' + RIGHT('0' + CONVERT(VARCHAR, MINUTOS % 60), 2)+':00' AS TH,
RIGHT('0' + CONVERT(VARCHAR, MINUTOSAPV / 60), 2) + ':' + RIGHT('0' + CONVERT(VARCHAR, MINUTOSAPV % 60), 2)+':00' AS THV
FROM (
SELECT AP.ID as id, MAT.Nome AS NOME, AP.PROFISSAO ,mat.email, SUM(SUBSTRING(AP.TH, 1, 2) * 60 + SUBSTRING(AP.TH, 4, 2)) AS MINUTOS,
'0' AS MINUTOSAPV, AP.CIDADE
FROM [Aprora WEB].dbo.Apropriacao AS AP INNER JOIN
[Server Information 2004].dbo.Matricula AS MAT ON AP.ID = MAT.ID --or ap.id <> mat.id
WHERE AP.DATA BETWEEN '2013-03-01' AND '2013-03-11'
GROUP BY AP.ID, MAT.Nome, AP.PROFISSAO, AP.CIDADE, mat.email
UNION
SELECT APV.ID, MAT.Nome AS NOME, APV.PROFISSAO ,mat.email, '0' AS MINUTOS, SUM(SUBSTRING(APV.TH, 1, 2) * 60 + SUBSTRING(APV.TH, 4, 2)) AS MINUTOSAPV, APV.CIDADE
FROM [Aprora WEB].dbo.Apropriacao_Validacao AS APV INNER JOIN
[Server Information 2004].dbo.Matricula AS MAT ON APV.ID = MAT.ID --or apv.id <> mat.id
WHERE APV.DATA BETWEEN '2013-03-01' AND '2013-03-11'
GROUP BY APV.ID, MAT.Nome, APV.PROFISSAO, APV.CIDADE, mat.email
UNION
SELECT ID, NOME, PROFISSAO, EMAIL, '0' AS MINUTOS, '0' AS MINUTOSAPV, CIDADE
FROM [Server Information 2004].dbo.Matricula
WHERE VIGENCIA = '1'
GROUP BY ID, NOME, PROFISSAO, EMAIL, CIDADE) AS X
GROUP BY CIDADE, NOME, PROFISSAO,email, RIGHT('0' + CONVERT(VARCHAR, MINUTOS / 60), 2) + ':' + RIGHT('0' + CONVERT(VARCHAR, MINUTOS % 60), 2),
RIGHT('0' + CONVERT(VARCHAR, MINUTOSAPV / 60), 2) + ':' + RIGHT('0' + CONVERT(VARCHAR, MINUTOSAPV % 60), 2)
ORDER BY NOME, CIDADE
Carregando comentários...