I’m trying to combine select and update in one statement
In select I’m trying to find what is the current Fiscal year fiscal period based on table "month_dim" and by using current date. its running fine since it has corresponding values. But I need to pass values from select to update statement to same table to update values of CY,PY and YTD. Currently in update statements I’m doing hard coding and have 3 separate update statements. it will good if it can be combined in one as well.
select fiscal_period, fiscal_year from "schema_name"."month_dim" where date_sql = current_date
update statements are below:-
UPDATE "Schema_name"."month_dim" SET
  YTD = case when fiscal_period <= '1'
       then 'Y' else 'N' end;
UPDATE " Schema_name "."month_dim" SET
    CY = case when fiscal_year >= '2021'
       then 'Y' else 'N' end;
UPDATE " Schema_name "."month_dim" SET
    PY = case when fiscal_year <= '2021'
       then 'Y' else 'N' end;
Please help
Thanks
Advertisement
Answer
Is this what you are looking for? :
DO
BEGIN
DECLARE FISCALPERIOD NVARCHAR(3); 
DECLARE FISCALYEAR NVARCHAR(4);
    SELECT 
            fiscal_period, fiscal_year 
        INTO fiscalperiod, fiscalyear 
    FROM 
            schema_name.month_dim
    WHERE 
           date_sql = current_date;
    UPDATE schema_name.month_dim
    SET
        YTD = CASE
                  WHEN fiscal_period <= :fiscalperiod THEN 'Y'
                  ELSE 'N'
              END
      , CY = CASE
                 WHEN fiscal_year >= :fiscalyear THEN 'Y'
                 ELSE 'N'
             END
      , PY = CASE
                 WHEN fiscal_year <= :fiscalyear THEN 'Y'
                 ELSE 'N'
             END;
END;