es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo calcular fisc_day_of_wk cuando mi año fiscal comienza el 26/12/2020, sábado.

Estoy utilizando la siguiente consulta en Redshift:

select 
  cast(NEW_SEQ AS INTEGER) as calndr_key
, date (datum)    as calndr_dt
, CAST(to_char(datum, 'ID') AS INTEGER ) as fisc_day_of_wk
, CAST(to_char(datum, 'DD') AS INTEGER ) as fisc_day_of_mth
, CAST(to_char(datum, 'DDD') AS INTEGER ) as fisc_day_of_yr
, CAST(to_char(datum, 'WW') AS INTEGER ) as fisc_wk
, CAST(to_char(datum, 'MM') AS INTEGER ) as fisc_mth
, CAST(to_char(datum, 'YYYYMM') AS INTEGER) as fisc_mth_num
, date (DATEADD(D, - (cast (DATE_PART(WEEKDAY,datum+2 - INTERVAL '1 DAY') as smallint)), datum+2))-2 as fisc_wk_strt_dt
, date (DATEADD(D,( 4 - (cast (DATE_PART(WEEKDAY, datum+2 - INTERVAL '1 DAY') as smallint))), datum+2)) as fisc_wk_end_dt
, date (date_trunc('Month', datum)) as fisc_mth_strt_dt
, last_day(datum) as fisc_mth_end_dt
   FROM
(    SELECT DATEADD('day', SEQ, MAX_DATE) AS datum
                ,(MAX_SEQ + SEQ)  AS NEW_SEQ
   FROM (SELECT ROW_NUMBER() OVER () AS SEQ FROM ads_devl.dim_calndr LIMIT 365) n,
   (SELECT MAX(calndr_key) AS MAX_SEQ FROM ads_devl.dim_calndr) ,
   (SELECT MAX(calndr_DT) AS MAX_DATE FROM ads_devl.dim_calndr where calndr_yr < '2021')
  ORDER BY 1)

Pero necesito llenar 7 para fisc_day_of_wk en la primera fila y luego 1, 2, 3 y así sucesivamente.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para poblar 7 en fisc_day_of_wk en la primera fila y luego 1, 2, 3 y así sucesivamente, puedes modificar la consulta agregando una declaración CASE. Reemplaza la línea:

    CAST(to_char(datum, 'ID') AS INTEGER ) as fisc_day_of_wk
    

    con:

    CASE WHEN ROW_NUMBER() OVER (ORDER BY datum) = 1 THEN 7 ELSE CAST(to_char(datum, 'ID') AS INTEGER ) END as fisc_day_of_wk
    

    Esto verificará si es la primera fila (usando la función ROW_NUMBER()) y, si es así, asignará 7 a fisc_day_of_wk. De lo contrario, utilizará el cálculo original para obtener el día fiscal de la semana.

Comments are closed.