Usuário com melhor resposta
View Agenda

Pergunta
-
Boa Tarde, tudo bem?
Eu preciso fazer uma view pra mostrar em um grid de uma agenda, onde em apresento com intervalo de 30 minutos, mostrando os horarios ja agendados.
Como eu poderia fazer essa view?
Tenho como campos principais AgendamentoData, AgendamentoHora.
Respostas
-
Davi,
Veja se estes exemplos te ajudam, utilizando CTE:
Declare @AgendamentoData Date, @AgendamentoHoraInicial Time, @AgendamentoHoraFinal Time Set @AgendamentoData=GetDate() Set @AgendamentoHoraInicial='08:00' Set @AgendamentoHoraFinal='18:00' ;With AgendaDeHorarios(Data, Hora) As ( Select @AgendamentoData As Data, @AgendamentoHoraInicial As Hora Union All Select Data, DateAdd(MINUTE,30, Hora) From AgendaDeHorarios Where Hora <= @AgendamentoHoraFinal ) Select Data, Hora From AgendaDeHorarios Go
-- Utilizando Function --
-- Criando a Function -- Create Function F_AgendaDeHorarios (@AgendamentoData Date, @AgendamentoHora TIME) RETURNS @Agenda Table (Codigo TinyInt Identity(1,1), Data Date, Horario Time) AS Begin Insert Into @Agenda Values(@AgendamentoData, @AgendamentoHora) While @AgendamentoHora <= '18:00' Begin Insert Into @Agenda (Data, Horario) Select Top 1 Data, DateAdd(MINUTE,30, Horario) From @Agenda Order By Codigo Desc Set @AgendamentoHora = DateAdd(Minute,30, @AgendamentoHora) End Return End Go -- Executando a Function -- Select * From F_AgendaDeHorarios ('2019-06-25','15:00') Go
Pegando o resultado da Function e utilizando como uma Tabela e View:
-- Inserindo o Resultado em uma Tabela -- Select * Into AgendaDeHorarios From F_AgendaDeHorarios ('2019-06-25','15:00') Go -- Criando uma View -- Create View V_ExibirAgendamentoHorarios As Select * From AgendaDeHorarios -- Executando a View -- Select * From V_ExibirAgendamentoHorarios Go
Ressalto que este é um exemplo, um esboço de código, em nenhum momento eu levei em consideração suas regras de negócio, bem como, seus dados ou tabelas.
Espero que ajude.
Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
- Editado Junior Galvão - MVPMVP terça-feira, 25 de junho de 2019 18:33 Editando o conteúdo da resposta
- Marcado como Resposta DaviSaba terça-feira, 25 de junho de 2019 19:12
Todas as Respostas
-
Davi,
Veja se estes exemplos te ajudam, utilizando CTE:
Declare @AgendamentoData Date, @AgendamentoHoraInicial Time, @AgendamentoHoraFinal Time Set @AgendamentoData=GetDate() Set @AgendamentoHoraInicial='08:00' Set @AgendamentoHoraFinal='18:00' ;With AgendaDeHorarios(Data, Hora) As ( Select @AgendamentoData As Data, @AgendamentoHoraInicial As Hora Union All Select Data, DateAdd(MINUTE,30, Hora) From AgendaDeHorarios Where Hora <= @AgendamentoHoraFinal ) Select Data, Hora From AgendaDeHorarios Go
-- Utilizando Function --
-- Criando a Function -- Create Function F_AgendaDeHorarios (@AgendamentoData Date, @AgendamentoHora TIME) RETURNS @Agenda Table (Codigo TinyInt Identity(1,1), Data Date, Horario Time) AS Begin Insert Into @Agenda Values(@AgendamentoData, @AgendamentoHora) While @AgendamentoHora <= '18:00' Begin Insert Into @Agenda (Data, Horario) Select Top 1 Data, DateAdd(MINUTE,30, Horario) From @Agenda Order By Codigo Desc Set @AgendamentoHora = DateAdd(Minute,30, @AgendamentoHora) End Return End Go -- Executando a Function -- Select * From F_AgendaDeHorarios ('2019-06-25','15:00') Go
Pegando o resultado da Function e utilizando como uma Tabela e View:
-- Inserindo o Resultado em uma Tabela -- Select * Into AgendaDeHorarios From F_AgendaDeHorarios ('2019-06-25','15:00') Go -- Criando uma View -- Create View V_ExibirAgendamentoHorarios As Select * From AgendaDeHorarios -- Executando a View -- Select * From V_ExibirAgendamentoHorarios Go
Ressalto que este é um exemplo, um esboço de código, em nenhum momento eu levei em consideração suas regras de negócio, bem como, seus dados ou tabelas.
Espero que ajude.
Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
- Editado Junior Galvão - MVPMVP terça-feira, 25 de junho de 2019 18:33 Editando o conteúdo da resposta
- Marcado como Resposta DaviSaba terça-feira, 25 de junho de 2019 19:12
-