none
Select com apenas registros dessa semana RRS feed

  • Pergunta

  • Boa tarde á todos, 

    o meu chefe pediu pra eu criar um select e futuramente que funcionasse em um relatório, qualquer, a minha necessidade é a seguinte,

    preciso saber hoje(quinta-feira) quantos registros repetidos nessa semana, a semana eu considero de segunda á domingo, exemplo tive 5 consultas médicas de segunda até hoje quinta-feira), na minha tabela de consultas eu tenho a data da consulta, queria montar utilizando select mesmo, entendeu?

    Desde já agradeço pela ajuda,


    Abs, Adriano_SP

    quinta-feira, 9 de maio de 2013 17:41

Respostas

  • Adriano, veja se é isto :

    -- Criando sua table
    Create table consulta (
     
    ukey int identity(1,1), data datetime, ukey_paciente int not null
     
    )
    -- inserindo dados
     insert into consulta (data,ukey_paciente)values(getdate(),1);
     insert into consulta (data,ukey_paciente)values(getdate()-2,1);
     insert into consulta (data,ukey_paciente)values((getdate()-3),1);
     insert into consulta (data,ukey_paciente)values(getdate(),2);
     insert into consulta (data,ukey_paciente)values(getdate()-2,2);
     insert into consulta (data,ukey_paciente)values((getdate()-7),2); 
     
    -- Determinando data atual e o primeiro dia (Domingo)
    declare @PrimeiroDia date
    declare @date date
    set @date = GETDATE()
    
    set @PrimeiroDia = case when datepart(W,@date) = 1 then GETDATE()
    						when datepart(W,@date) = 2 then GETDATE() - 1 
    						when datepart(W,@date) = 3 then GETDATE() - 2
    						when datepart(W,@date) = 4 then GETDATE() - 3
    						when datepart(W,@date) = 5 then GETDATE() - 4
    						when datepart(W,@date) = 6 then GETDATE() - 5
    						when datepart(W,@date) = 7 then GETDATE() - 6 end 
    						
    select
    	ukey_paciente,
    	COUNT(*) as [qtd de consulta]
    		from consulta
    where data between @PrimeiroDia and GETDATE()
    group by ukey_paciente


    Alexandre Matayosi Conde Mauricio.

    • Marcado como Resposta Adriano_SP sexta-feira, 10 de maio de 2013 21:33
    sexta-feira, 10 de maio de 2013 12:21

Todas as Respostas

  • Adriano boa tarde !

    A sua duvida seria em como pegar o primeiro dia que seria o domingo ou como trazer os registros repetidos ? se for como trazer os registros repetidos voce pode colocar a estrutura da tabela e uns exemplos da dados ? se for somente como pegar o primeiro dia use uma variavel antes do select para fazer esta captura e coloque no filtro do seu relatorio, ex:

    declare @PrimeiroDia date
    
    set @PrimeiroDia = case when datepart(W,@date) = 1 then GETDATE()
    						when datepart(W,@date) = 2 then GETDATE() - 1 
    						when datepart(W,@date) = 3 then GETDATE() - 2
    						when datepart(W,@date) = 4 then GETDATE() - 3
    						when datepart(W,@date) = 5 then GETDATE() - 4
    						when datepart(W,@date) = 6 then GETDATE() - 5
    						when datepart(W,@date) = 7 then GETDATE() - 6 end 
    						
    select
    	-- seus campos
    		from [Sua Tabela]
    where [seu campo de data] between @PrimeiroDia and GETDATE()


    Alexandre Matayosi Conde Mauricio.

    quinta-feira, 9 de maio de 2013 19:28
  • Deleted
    quinta-feira, 9 de maio de 2013 19:30
  • Alexandre/José,

    Apenas um exemplo hipotético, imagine que que eu não possa fazer uma nova consulta ao meu médico essa semana e uma nova consulta poderia ser feito apenas na semana que vem ou seja a partir de segunda-feira tudo bem posso fazer uma nova consulta, será que esclareceu mais ou compliquei mais?

    rs abraço e obrigado pela ajuda,


    Abs, Adriano_SP

    quinta-feira, 9 de maio de 2013 21:17
  • Acho que ficou meio confuso...faz o seguinte, nos mostre a estrutura de suas tabelas e o relacionamento delas, a partir dai nos fale o resultado que voce espera para que possamos pensar numa query...

    Alexandre Matayosi Conde Mauricio.

    quinta-feira, 9 de maio de 2013 21:23
  • Segue estrutura da tabela e alguns insert´s

    Quero que seja retornada a quantidade de consultas realizada por cada paciente na mesma semana (de segunda á domingo)

    Create table consulta (

    ukey int identity(1,1), data datetime, ukey_paciente int not null

    )
    insert into consulta (data,ukey_paciente)values(getdate(),1);
    insert into consulta (data,ukey_paciente)values(getdate()-2,1);
    insert into consulta (data,ukey_paciente)values((getdate()-3),1);
    insert into consulta (data,ukey_paciente)values(getdate(),2);
    insert into consulta (data,ukey_paciente)values(getdate()-2,2);
    insert into consulta (data,ukey_paciente)values((getdate()-7),2);


    Abs, Adriano_SP

    sexta-feira, 10 de maio de 2013 12:07
  • Adriano, veja se é isto :

    -- Criando sua table
    Create table consulta (
     
    ukey int identity(1,1), data datetime, ukey_paciente int not null
     
    )
    -- inserindo dados
     insert into consulta (data,ukey_paciente)values(getdate(),1);
     insert into consulta (data,ukey_paciente)values(getdate()-2,1);
     insert into consulta (data,ukey_paciente)values((getdate()-3),1);
     insert into consulta (data,ukey_paciente)values(getdate(),2);
     insert into consulta (data,ukey_paciente)values(getdate()-2,2);
     insert into consulta (data,ukey_paciente)values((getdate()-7),2); 
     
    -- Determinando data atual e o primeiro dia (Domingo)
    declare @PrimeiroDia date
    declare @date date
    set @date = GETDATE()
    
    set @PrimeiroDia = case when datepart(W,@date) = 1 then GETDATE()
    						when datepart(W,@date) = 2 then GETDATE() - 1 
    						when datepart(W,@date) = 3 then GETDATE() - 2
    						when datepart(W,@date) = 4 then GETDATE() - 3
    						when datepart(W,@date) = 5 then GETDATE() - 4
    						when datepart(W,@date) = 6 then GETDATE() - 5
    						when datepart(W,@date) = 7 then GETDATE() - 6 end 
    						
    select
    	ukey_paciente,
    	COUNT(*) as [qtd de consulta]
    		from consulta
    where data between @PrimeiroDia and GETDATE()
    group by ukey_paciente


    Alexandre Matayosi Conde Mauricio.

    • Marcado como Resposta Adriano_SP sexta-feira, 10 de maio de 2013 21:33
    sexta-feira, 10 de maio de 2013 12:21
  • Isso mesmo, Show de bola! Valeu !!!!!!


    Abs, Adriano_SP

    sexta-feira, 10 de maio de 2013 21:33