Retorar Consulta Sql Server
Olá, estou procurando uma solução para retornar numa view os resultados abaixo:
[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]
[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
Curtidas 0
Respostas
Jefferson Santos
31/03/2014
Veja se é isso que deseja:
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
Gamal Ismail
31/03/2014
Obrigado Jefferson pela resposta...
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:
Depois pra tentar reparar o agrupamento
fiz uma outra consulta usando a UNION acima, como segue:
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.
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
Jefferson Santos
31/03/2014
Para deixar otimizar isso pode utilizar a clausula Cross Apply e com os campos NULL pode utilizar a clausula ISNULL
GOSTEI 0
Gamal Ismail
31/03/2014
Obrigado pela atenção Jefferson
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]
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
Jefferson Santos
31/03/2014
Obrigado pela atenção Jefferson
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]
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