GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Utilizar Datepart como parametro de Query

sql
sqlserver
Tags: #<Tag:0x00007f9d213b9cd0> #<Tag:0x00007f9d213b9ac8>

#1

Estou desenvolvendo um sistema e estou esbarrando em uma consulta SQL que consiste em o usuário pesquisar por Data e terá a opção de escolher se a consulta será feita adicionando Final de Semana a essas datas, excluindo o final de semana ou só consultando o Final de Semana.

No caso, tenho uma View que será usada para esta aplicação. O problema é que ela não tem um campo específico para o dia da semana, então tive que fazer um DatePart.

O problema é que quando eu utilizo com outros elementos da consulta, da erro nela.

Já tentei dentro da Query, com Join, com Union, com Having, criando um Banco auxiliar para comparar e nada. Alguém poderia me explicar de como isso poderia ser feito?

Segue abaixo o código das duas tabelas.

SELECT [DT_ABERT_OPER], DATEPART(weekday, [DT_ABERT_OPER]) AS 
DIA_DA_SEMANA
FROM [dbo].[reavw001_ocorrencias_xxxxx] WHERE [DT_ABERT_OPER] 
BETWEEN '2017-11-03' AND '2017-11-05' 

No Caso, fiz essa consulta teste para retornar o DatePart dos dias 03 ao 05. Retornou 6 para as ocorrências do dia 03(Sexta), 7 para as do dia 4(Sábado) e 1 para o Domingo, o problema é que a consulta final será uma média destas ocorrências e o total de horas que ela ficou fora. E nisso, o dia da semana não está se encaixando.

Segue abaixo a consulta final que preciso encaixar a escolha de Final de Semana.

SELECT GITEC,   SUM (DATEDIFF (minute,INICIO,DH_ULTIMA_CATEGORIZACAO)) 
as Soma_tempo, 
AVG (DATEDIFF (minute,INICIO,DH_ULTIMA_CATEGORIZACAO)) as Media_tempo 
FROM [readb004].[dbo].[reavw001_ocorrencias_xxxxxx] WHERE 
([DT_ABERT_OPER]
BETWEEN '2017-11-03' AND '2017-11-06 23:59:59') GROUP BY GITEC order 
by GITEC DESC

O que poderá ser feito para solucionara isso? Uma procedure ou tem algum outro jeito?