Consulta com vários group by
Prezados, estou realizando uma consulta para trazer dados referentes a uma agenda de visitas, mas estou com dúvidas para fazer um agrupamento.
Segue o código SQL para darem uma olhada:
SELECT vi.data_agendado, vi.turno, vi.tipo_agendamento,
IF(p.id_tipo=2,COUNT(p.id_tipo),0) AS categoriaA,
IF(p.id_tipo=4,COUNT(p.id_tipo),0) AS categoriaB,
IF(p.id_tipo=1,COUNT(p.id_tipo),0) AS categoriaC,
IF(p.id_tipo=3,COUNT(p.id_tipo),0) AS categoriaD,u.nome AS tec_agenda,u.id_usuario, u.color, u2.nome AS motorista, car.modelo AS transporte, v.id_vistoria, codigo_rj,
IF(m.id_municipio=68,ce.bairro_distrito,m.municipio) AS localidade,
IF( c.tipo = 1,c.nome,razao_social) AS nome_cliente, cc.nome AS contato
FROM tbl_vistoria_item AS vi
LEFT JOIN tbl_acl_usuario AS u ON u.id_usuario=vi.id_tecnico_agenda
LEFT JOIN tbl_acl_usuario AS u2 ON u2.id_usuario=vi.id_motorista
LEFT JOIN tbl_veiculo AS car ON car.id_veiculo=vi.id_transporte
INNER JOIN tbl_produto AS p ON p.id_produto=vi.id_produto
INNER JOIN tbl_vistoria AS v ON v.id_vistoria=vi.id_vistoria
INNER JOIN tbl_cliente_endereco AS ce ON ce.id_endereco=v.id_endereco
INNER JOIN tbl_municipio AS m ON m.id_municipio = ce.id_municipio
INNER JOIN tbl_cliente AS c ON c.id_cliente=v.id_cliente
INNER JOIN tbl_cliente_contato AS cc ON cc.id_endereco=v.id_endereco
WHERE (v.situacao = 'Em atendimento') AND (vi.data_agendado IS NOT NULL) AND (data_agendado = '2015-05-06' )
GROUP BY vi.id_vistoria, vi.data_agendado,p.id_tipo
ORDER BY vi.data_agendado ASC, localidade ASC, tec_agenda ASC
Segue resultado obtido atualmente:
https://drive.google.com/file/d/0BwiE_a-qekS5N25aem1fVlJ6RTg/view?usp=sharing
Percebam, o que eu quero é as ultimas 3 linhas em apenas uma.
É o mesmo tecnico que vai realizar uma vistoria no mesmo cliente, na mesma data, mas tenho que mostrar a quantidade de equipamentos de cada categoria que ele vai vistoriar. Ignorem dados relativos a carro e motorista.
Se eu agrupar por vi.id_tecnico_agenda a visita do técnico vem em uma mesma linha, pensei em fazer subconsulta para trazer os totais.
Se precisarem de mais esclarecimento sobre o modelo eu informo.
Discussão (15)
Carregando comentários...