Fórum Retorar Consulta Sql Server #474620
31/03/2014
0
[img:descricao=resultado estilo agenda]http://arquivo.devmedia.com.br/forum/imagem/290142-20140331-143009.png[/img]
sendo que no banco tenho as seguintes tabelas:
[img:descricao=diagrama]http://arquivo.devmedia.com.br/forum/imagem/290142-20140331-143815.png[/img]
Gamal Ismail
Curtir tópico
+ 0Posts
31/03/2014
Jefferson Santos
SELECT H.IDHOR, P.DESPROF, S.NOMCLI TB_AGENDA A JOIN TB_HOR_AGE H ON H.IDFOR = A.IDHOR JOIN TB_PROFISSIO P ON P.IDPROF = A.IDPROF JOIN TB_SALAO S ON S.IDAGE = A.IDAGE
Gostei + 0
31/03/2014
Gamal Ismail
Não consegui aplicar seu exemplo na minha consulta com base nas tabelas.
Talvez possa me ajudar a reparar a consulta que fiz, qual chegou mto próximo do resultado. usando UNION.
Fiz uma consulta de UNION assim:
SELECT TB_AGENDA_1.DIVISAO AS Horario, dbo.TB_PARCEIROS.NOMCLI AS Leandro, CAST(NULL AS VARCHAR(MAX)) AS RODRIGO, CAST(NULL AS VARCHAR(MAX)) AS VIVIANE, CAST(NULL AS VARCHAR(MAX)) AS TATIANE, CAST(NULL AS VARCHAR(MAX)) AS TAINA
FROM dbo.TB_AGENDA AS TB_AGENDA_1 INNER JOIN
dbo.TB_SALAO ON TB_AGENDA_1.IDAGE = dbo.TB_SALAO.IDAGE INNER JOIN
dbo.TB_PARCEIROS ON dbo.TB_SALAO.IDCLI = dbo.TB_PARCEIROS.IDCLI
GROUP BY TB_AGENDA_1.DIVISAO, TB_AGENDA_1.IDPROF, dbo.TB_PARCEIROS.NOMCLI
HAVING (TB_AGENDA_1.IDPROF = 1)
UNION
SELECT TB_AGENDA_1.DIVISAO AS Horario, Null AS Leandro, dbo.TB_PARCEIROS.NOMCLI AS RODRIGO, CAST(NULL AS VARCHAR(MAX)) AS VIVIANE,CAST(NULL AS VARCHAR(MAX)) AS TATIANE, CAST(NULL AS VARCHAR(MAX)) AS TAINA
FROM dbo.TB_AGENDA AS TB_AGENDA_1 INNER JOIN
dbo.TB_SALAO ON TB_AGENDA_1.IDAGE = dbo.TB_SALAO.IDAGE INNER JOIN
dbo.TB_PARCEIROS ON dbo.TB_SALAO.IDCLI = dbo.TB_PARCEIROS.IDCLI
GROUP BY TB_AGENDA_1.DIVISAO, TB_AGENDA_1.IDPROF, dbo.TB_PARCEIROS.NOMCLI
HAVING (TB_AGENDA_1.IDPROF = 4)
UNION
SELECT TB_AGENDA_1.DIVISAO AS Horario, CAST(NULL AS VARCHAR(MAX)) AS Leandro, CAST(NULL AS VARCHAR(MAX)) AS RODRIGO, dbo.TB_PARCEIROS.NOMCLI AS VIVIANE, CAST(NULL AS VARCHAR(MAX)) AS TATIANE, CAST(NULL AS VARCHAR(MAX)) AS TAINA
FROM dbo.TB_AGENDA AS TB_AGENDA_1 INNER JOIN
dbo.TB_SALAO ON TB_AGENDA_1.IDAGE = dbo.TB_SALAO.IDAGE INNER JOIN
dbo.TB_PARCEIROS ON dbo.TB_SALAO.IDCLI = dbo.TB_PARCEIROS.IDCLI
GROUP BY TB_AGENDA_1.DIVISAO, TB_AGENDA_1.IDPROF, dbo.TB_PARCEIROS.NOMCLI
HAVING (TB_AGENDA_1.IDPROF = 2)
UNION
SELECT TB_AGENDA_1.DIVISAO AS Horario, CAST(NULL AS VARCHAR(MAX)) AS Leandro, CAST(NULL AS VARCHAR(MAX)) AS RODRIGO, CAST(NULL AS VARCHAR(MAX)) AS VIVIANE, dbo.TB_PARCEIROS.NOMCLI AS TATIANE, CAST(NULL AS VARCHAR(MAX)) AS TAINA
FROM dbo.TB_AGENDA AS TB_AGENDA_1 INNER JOIN
dbo.TB_SALAO ON TB_AGENDA_1.IDAGE = dbo.TB_SALAO.IDAGE INNER JOIN
dbo.TB_PARCEIROS ON dbo.TB_SALAO.IDCLI = dbo.TB_PARCEIROS.IDCLI
GROUP BY TB_AGENDA_1.DIVISAO, TB_AGENDA_1.IDPROF, dbo.TB_PARCEIROS.NOMCLI
HAVING (TB_AGENDA_1.IDPROF = 3)
UNION
SELECT TB_AGENDA_1.DIVISAO AS Horario, CAST(NULL AS VARCHAR(MAX)) AS Leandro, CAST(NULL AS VARCHAR(MAX)) AS RODRIGO, CAST(NULL AS VARCHAR(MAX)) AS VIVIANE, CAST(NULL AS VARCHAR(MAX)) AS TATIANE, dbo.TB_PARCEIROS.NOMCLI AS TAINA
FROM dbo.TB_AGENDA AS TB_AGENDA_1 INNER JOIN
dbo.TB_SALAO ON TB_AGENDA_1.IDAGE = dbo.TB_SALAO.IDAGE INNER JOIN
dbo.TB_PARCEIROS ON dbo.TB_SALAO.IDCLI = dbo.TB_PARCEIROS.IDCLI
GROUP BY TB_AGENDA_1.DIVISAO, TB_AGENDA_1.IDPROF, dbo.TB_PARCEIROS.NOMCLI
HAVING (TB_AGENDA_1.IDPROF = 5)Depois pra tentar reparar o agrupamento
fiz uma outra consulta usando a UNION acima, como segue:
SELECT Horario, Leandro, RODRIGO, VIVIANE, TATIANE, TAINA FROM dbo.SP_UNION_AGENDA GROUP BY Horario, Leandro, RODRIGO, VIVIANE, TATIANE, TAINA
O resultado fica mto próximo ao que preciso:
[img:descricao=Consulta a Union]http://arquivo.devmedia.com.br/forum/imagem/290142-20140331-170303.png[/img]
Mas como pode observar, preciso agrupar os Nomes e os Campos NULL pra fechar a agenda e o horario.
Gostei + 0
31/03/2014
Jefferson Santos
Gostei + 0
31/03/2014
Gamal Ismail
Consegui finalizar a consulta e obter o resultado usando [MAX]
SELECT Horario, MAX(Leandro) AS Leandro, MAX(RODRIGO) AS RODRIGO, MAX(VIVIANE) AS VIVIANE, MAX(TATIANE) AS TATIANE, MAX(TAINA) AS TAINA
FROM dbo.SP_UNION_AGENDA
GROUP BY Horario
[img:descricao=union + max]http://arquivo.devmedia.com.br/forum/imagem/290142-20140331-182256.png[/img]
Gostei + 0
31/03/2014
Jefferson Santos
Consegui finalizar a consulta e obter o resultado usando [MAX]
SELECT Horario, MAX(Leandro) AS Leandro, MAX(RODRIGO) AS RODRIGO, MAX(VIVIANE) AS VIVIANE, MAX(TATIANE) AS TATIANE, MAX(TAINA) AS TAINA
FROM dbo.SP_UNION_AGENDA
GROUP BY Horario
[img:descricao=union + max]http://arquivo.devmedia.com.br/forum/imagem/290142-20140331-182256.png[/img]
Nada..
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)