SELECT
dbo.tblClientes_grupos.NM As Grupo,
dbo.tblAtendimento.CD_Cliente,
dbo.Clientes.NomeDoCliente As Cliente,
dbo.tblAtendimento.ID As Att,
Month(dbo.tblAtendimento.DT_Atendimento) As Mes_Att,
dbo.tblAtendimento.DT_Atendimento,
NM_Att = Case Month(dbo.tblAtendimento.DT_Atendimento)
When '1' Then 'JANEIRO' When '2' Then 'FEVEREIRO' When '3' Then 'MARÇO' When '4' Then 'ABRIL' When '5' Then 'MAIO' When '6' Then 'JUNHO' When '7' Then 'JULHO'
When '8' Then 'AGOSTO' When '9' Then 'SETEMBRO' When '10' Then 'OUTUBRO' When '11' Then 'NOVEMBRO' When '12' Then 'DEZEMBRO'
End,
dbo.tblOrdens_servico.ID As OS,
Month(dbo.tblOrdens_servico.DT_Os) As Mes_OS,
dbo.tblOrdens_servico.DT_Os,
NM_OS = Case Month(dbo.tblOrdens_servico.DT_Os)
When '1' Then 'JANEIRO' When '2' Then 'FEVEREIRO' When '3' Then 'MARÇO' When '4' Then 'ABRIL' When '5' Then 'MAIO' When '6' Then 'JUNHO' When '7' Then 'JULHO'
When '8' Then 'AGOSTO' When '9' Then 'SETEMBRO' When '10' Then 'OUTUBRO' When '11' Then 'NOVEMBRO' When '12' Then 'DEZEMBRO'
End,
Externo = Case (dbo.tblOrdens_servico.TP_Externo) When '1' Then 'X' End,
Interno = Case (dbo.tblOrdens_servico.TP_Interno) When '1' Then 'X' End,
ATT_Status = Case (dbo.tblAtendimento.TP_Status) When '1' Then 'ABE' When '2' Then 'AND' When '3' Then 'FEC' End,
OS_Status = Case When (dbo.tblOrdens_Servico.TP_Aberta = 1) Then 'ABE' When (dbo.tblOrdens_Servico.TP_Andamento = 1) Then 'AND'
When (dbo.tblOrdens_Servico.TP_Concluida = 1) Then 'FEC' End,
ATT_AbertoTotal = Case When (dbo.tblAtendimento.TP_Status = 1 Or dbo.tblAtendimento.TP_Status = 2) Then Count(dbo.tblAtendimento.CD_Cliente) End,
ATT_FechadoTotal = Case When (dbo.tblAtendimento.TP_Status = 3) Then Count(dbo.tblAtendimento.CD_Cliente) End,
OS_AbertoTotal = Case When (dbo.tblOrdens_Servico.TP_Aberta = 1 Or dbo.tblOrdens_Servico.TP_Andamento = 1) Then Count(dbo.tblAtendimento.CD_Cliente) End,
OS_FechadoTotal = Case When (dbo.tblOrdens_Servico.TP_Concluida = 1) Then Count(dbo.tblAtendimento.CD_Cliente) End,
GETDATE() As DT_Imp
FROM
dbo.tblAtendimento
INNER JOIN
dbo.Clientes On dbo.tblAtendimento.CD_Cliente = dbo.Clientes.CódigoDoCliente
LEFT JOIN
dbo.tblClientes_grupos On dbo.Clientes.ID_Grupo = dbo.tblClientes_grupos.ID
INNER JOIN
dbo.Funcionários On dbo.tblAtendimento.CD_Tecnico = dbo.Funcionários.CódigoDoFuncionário
LEFT JOIN
dbo.tblOrdens_servico On dbo.tblAtendimento.ID = dbo.tblOrdens_servico.ID_Atendimento
WHERE
(dbo.tblAtendimento.CD_Cliente Is Not Null) And (dbo.Funcionários.NomeDoFuncionário Is Not Null)
GROUP BY
dbo.tblClientes_grupos.NM,
dbo.tblAtendimento.CD_Cliente,
dbo.Clientes.NomeDoCliente,
dbo.tblAtendimento.ID,
Month(dbo.tblAtendimento.DT_Atendimento),
Month(dbo.tblOrdens_servico.DT_Os),
dbo.tblOrdens_servico.ID,
dbo.tblAtendimento.CD_Tecnico,
dbo.tblOrdens_servico.TP_Externo,
dbo.tblOrdens_servico.TP_Interno,
dbo.tblAtendimento.DT_Atendimento,
dbo.tblOrdens_servico.DT_Os,
dbo.Funcionários.NomeDoFuncionário,
dbo.tblAtendimento.TP_Status,
dbo.tblOrdens_Servico.TP_Aberta,
dbo.tblOrdens_Servico.TP_Andamento,
dbo.tblOrdens_Servico.TP_concluida
ORDER BY
dbo.Clientes.NomeDoCliente asc,
dbo.tblAtendimento.DT_Atendimento asc
Onde, resumidamente, ira me listar as ordens de serviço(OS) e Atendimentos(ATT) que um determinado cliente possui no relatório...
Até então, estava ok mas, preciso mostrar todos os clientes, indiferente se tem OS/ATT ou não, sei que com o inner join ele só me trás apenas os que tem OS/ATT vinculados, como poderia fazer para que me liste todos os clientes, se tem OS/ATT ou não?
Question
Vinicius Schuh
Bom dia Amigos, tenho o seguinte código SQL:
Onde, resumidamente, ira me listar as ordens de serviço(OS) e Atendimentos(ATT) que um determinado cliente possui no relatório...
Até então, estava ok mas, preciso mostrar todos os clientes, indiferente se tem OS/ATT ou não, sei que com o inner join ele só me trás apenas os que tem OS/ATT vinculados, como poderia fazer para que me liste todos os clientes, se tem OS/ATT ou não?
Obg
Link to comment
Share on other sites
6 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.