Thanks for taking the time to look at this.
How to get the MAX of a text value in column A. I would like to and another where clause to show only one of the “FY20-Q4M#” (MAX value only)
Current Table
YY-QQ_STATUS | Program |
---|---|
FY20-Q2_ACTUALS | XYZ |
FY20-Q3_ACTUALS | XYZ |
FY20-Q3_BUDGET | XYZ |
FY20-Q4M0 | XYZ |
FY20-Q4M1 | XYZ |
FY20-Q4M2 | XYZ |
FY20-Q4_BUDGET | XYZ |
FY20-Q4_OUTLOOK | XYZ |
Goal:
YY-QQ_STATUS | Program |
---|---|
FY20-Q2_ACTUALS | XYZ |
FY20-Q3_ACTUALS | XYZ |
FY20-Q3_BUDGET | XYZ |
FY20-Q4M2 | XYZ |
FY20-Q4_BUDGET | XYZ |
FY20-Q4_OUTLOOK | XYZ |
SELECT CASE WHEN UPPER(SCENARIO) LIKE '%ACTUALS%' THEN CONCAT(LEFT(FISCAL_YEAR,4) ,'-', QUARTER, '_ACTUALS') WHEN UPPER(SCENARIO) LIKE 'Q%M%' THEN CONCAT(LEFT(FISCAL_YEAR,4) ,'-', QUARTER, SUBSTR(SCENARIO,3,2)) WHEN UPPER(SCENARIO) LIKE '%BUDGET%' THEN CONCAT(LEFT(FISCAL_YEAR,4) ,'-', QUARTER, '_BUDGET') END AS SCENARIO, CONCAT(LEFT(FISCAL_YEAR,4) ,'-', QUARTER) AS QUARTER, PROGRAM_NAME, FROM [XXXXFinance.FINANCE_OPS_REPORT_V] FIN WHERE PROGRAM_NAME = 'Kiev20' AND (XYZ_PER_NAME_QUARTER >= (SELECT XYZ_PER_NAME_QUARTER FROM [XXXXMaster_Data.CALENDAR] WHERE CALENDAR_DATE_STR = CURRENT_DATE()) OR XYZ_PER_NAME_QUARTER < (SELECT XYZ_PER_NAME_QUARTER FROM [XXXXMaster_Data.CALENDAR] WHERE CALENDAR_DATE_STR = CURRENT_DATE()) AND (SCENARIO CONTAINS 'Actual' OR SCENARIO CONTAINS 'Budget') OR XYZ_PER_NAME_QUARTER < (SELECT XYZ_PER_NAME_QUARTER FROM [XXXXMaster_Data.CALENDAR] WHERE CALENDAR_DATE_STR = CURRENT_DATE()) AND (SCENARIO CONTAINS 'Q%M%')) group by 1,2,3 order by SCENARIO```
Advertisement
Answer
Try below
select ifnull(format('FY%s-Q%sM%s', any_value(year), any_value(quartal), max(month)), any_value(YY_QQ_STATUS)) as YY_QQ_STATUS, Program from ( select *, regexp_extract(YY_QQ_STATUS, r'FY(dd)-QdMd') year, regexp_extract(YY_QQ_STATUS, r'FYdd-Q(d)Md') quartal, regexp_extract(YY_QQ_STATUS, r'FYdd-QdM(d)') month from `project.XXXXFinance.FINANCE_OPS_REPORT_V` ) group by Program, ifnull(format('FY%s-Q%s', year, quartal), YY_QQ_STATUS)
if applied to sample data in y our question – output is