SUM COM CRITERIO DE SEMANA
07/06/2019
0
Ex.
01 a 07/06
14/06 a 22/06
23/06 a 30/06
Sem ter que utilizar o CASE, uma forma automatica. E possivel?
Mario Castilho
Posts
07/06/2019
Thiago Moreno
Ex.
01 a 07/06
14/06 a 22/06
23/06 a 30/06
Sem ter que utilizar o CASE, uma forma automatica. E possivel?
voce vai usar um select para cada semana fazer um union desses selects. Esse exemplo é para mysql. Ele pega o dia atual calculando as 4 ultimas semanas. Esse select é fixo. pega sempre as 4 ultimas semanas. Mas voce pode adapta-lo agrupando pela funcao week e passando seu intervalo de datas, para ele quebrar pelo numero da semana.
-- semana 1 select WEEK(curdate(), 0) semana, date_format(adddate(curdate(), 6 * -1), '%d/%m/%y') diainiciosemana, date_format(adddate(curdate(), 0 * -1), '%d/%m/%y') diafimsemana, ifnull(sum(valor_venda), 0) as valor from venda where data_venda between adddate(curdate(), 6 * -1) and adddate(curdate(), 0 * -1) union all -- semana 2 select week(adddate(curdate(), 7 * -1), 0) semana, date_format(adddate(curdate(), 13 * -1), '%d/%m/%y') diainiciosemana, date_format(adddate(curdate(), 7 * -1), '%d/%m/%y') diafimsemana, ifnull(sum(valor_venda), 0) as valor from venda where data_venda between adddate(curdate(), 13 * -1) and adddate(curdate(), 7 * -1) union all -- semana 3 select week(adddate(curdate(), 14 * -1), 0) semana, date_format(adddate(curdate(), 20 * -1), '%d/%m/%y') diainiciosemana, date_format(adddate(curdate(), 14 * -1), '%d/%m/%y') diafimsemana, ifnull(sum(valor_venda), 0) as valor from venda where data_venda between adddate(curdate(), 20 * -1) and adddate(curdate(), 14 * -1) union all -- semana 4 select week(adddate(curdate(), 21 * -1), 0) semana, date_format(adddate(curdate(), 27 * -1), '%d/%m/%y') diainiciosemana, date_format(adddate(curdate(), 21 * -1), '%d/%m/%y') diafimsemana, ifnull(sum(valor_venda), 0) as valor from venda where data_venda between adddate(curdate(), 27 * -1) and adddate(curdate(), 21 * -1)
07/06/2019
Mario Castilho
SELECT
COD_EMPR,
TO_CHAR(cont_dia_balanca,'DD/MM/YYYY') AS CONT_DIA_BALANCA,
sum(Liqui)Liqui
FROM TAB_FRC_ENTRAD_CL
Where cod_empr not in ('10')
AND CONT_DIA_BALANCA >='01/01/2019'
and din_frente_1 not in ('2034','2035','2036')
group by COD_EMPR,
cont_dia_balanca
07/06/2019
Thiago Moreno
SELECT
COD_EMPR,
TO_CHAR(cont_dia_balanca,'DD/MM/YYYY') AS CONT_DIA_BALANCA,
sum(Liqui)Liqui
FROM TAB_FRC_ENTRAD_CL
Where cod_empr not in ('10')
AND CONT_DIA_BALANCA >='01/01/2019'
and din_frente_1 not in ('2034','2035','2036')
group by COD_EMPR,
cont_dia_balanca
qual é o banco de dados?? como eu falei aquele exemplo é com mysql pq ele tem as funcoes que retornam a semana e que manipulam data, tem que ver quais sao essas funcoes do seu banco de dados.
07/06/2019
Jesus Lima
SELECT
COD_EMPR,
TO_CHAR(cont_dia_balanca,'DD/MM/YYYY') AS CONT_DIA_BALANCA,
sum(Liqui)Liqui
FROM TAB_FRC_ENTRAD_CL
Where cod_empr not in ('10')
AND CONT_DIA_BALANCA >='01/01/2019'
and din_frente_1 not in ('2034','2035','2036')
group by COD_EMPR,
cont_dia_balanca
Veja se dessa forma te ajuda
SELECT COD_EMPR, --TO_CHAR(cont_dia_balanca,'DD/MM/YYYY') AS CONT_DIA_BALANCA, to_char(CONT_DIA_BALANCA,'W') as NUMERO_SEMANA, sum(Liqui)Liqui FROM TAB_FRC_ENTRAD_CL Where cod_empr not in ('10') AND CONT_DIA_BALANCA >='01/01/2019' and din_frente_1 not in ('2034','2035','2036') group by COD_EMPR,to_char(CONT_DIA_BALANCA,'W')
Clique aqui para fazer login e interagir na Comunidade :)