Can you subtract days based on case when statements?

Hello!

I have a case when statement that I need to subtract a certain amount of days based off of:

Case

when 'ID' = '1066' THEN `Maturity Date` - 45

when 'ID' = '1019' THEN `Maturity Date` - 55

when 'ID' = '2600' THEN `Maturity Date` - 66

when 'ID' = '2507' THEN `Maturity Date` - 70

when 'ID' = '1075' THEN `Maturity Date` - 75

when 'ID' = '2669' THEN `Maturity Date` - 85

ELSE `Maturity Date` - 60

END


This comes back as an error as it's trying to have the output be a floating decimal instead of a date.

Any assistance is greatly appreciated. (I'm still fairly new to using Domo)

Tagged:

Best Answer

  • MarkSnodgrass
    Answer ✓

    You will want to use the DATE_SUB function to subtract days from a given date. It would look like this:

    Case
    when 'ID' = '1066' THEN DATE_SUB(`Maturity Date`, INTERVAL 45 day)
    when 'ID' = '1019' THEN DATE_SUB(`Maturity Date`, INTERVAL 55 day)
    when 'ID' = '2600' THEN DATE_SUB(`Maturity Date`, INTERVAL 66 day)
    when 'ID' = '2507' THEN DATE_SUB(`Maturity Date`, INTERVAL 70 day)
    when 'ID' = '1075' THEN DATE_SUB(`Maturity Date`, INTERVAL 75 day)
    when 'ID' = '2669' THEN DATE_SUB(`Maturity Date`, INTERVAL 85 day)
    ELSE DATE_SUB(`Maturity Date`, INTERVAL 66 day)
    END
    

    As far as returning a floating decimal instead of a date, I'm not sure what you would expect to be returned when you are wanting to subtract a number of days from a date.

    **Check out my Domo Tips & Tricks Videos

    **Make sure to <3 any users posts that helped you.
    **Please mark as accepted the ones who solved your issue.

Answers

  • MarkSnodgrass
    Answer ✓

    You will want to use the DATE_SUB function to subtract days from a given date. It would look like this:

    Case
    when 'ID' = '1066' THEN DATE_SUB(`Maturity Date`, INTERVAL 45 day)
    when 'ID' = '1019' THEN DATE_SUB(`Maturity Date`, INTERVAL 55 day)
    when 'ID' = '2600' THEN DATE_SUB(`Maturity Date`, INTERVAL 66 day)
    when 'ID' = '2507' THEN DATE_SUB(`Maturity Date`, INTERVAL 70 day)
    when 'ID' = '1075' THEN DATE_SUB(`Maturity Date`, INTERVAL 75 day)
    when 'ID' = '2669' THEN DATE_SUB(`Maturity Date`, INTERVAL 85 day)
    ELSE DATE_SUB(`Maturity Date`, INTERVAL 66 day)
    END
    

    As far as returning a floating decimal instead of a date, I'm not sure what you would expect to be returned when you are wanting to subtract a number of days from a date.

    **Check out my Domo Tips & Tricks Videos

    **Make sure to <3 any users posts that helped you.
    **Please mark as accepted the ones who solved your issue.