Case Statement Error When Using Minus Snowflake Db

Case Statement Error When Using Minus Snowflake Db

I´m trying to change a specific date to a other one in order to compare the hash values of two queries. For that I´m using the CASE statement. But I can´t understand why I´m getting the following error

The column DATE_VALUE has the data type DATE and I´m operating on a Snowflake Database

inconsistent data type for result columns for set operator input branches, expected DATE, got BOOLEAN for expression [{2}] branch {3}

SQL statement

SELECT
  COL
, CASE 
    WHEN DATE_VALUE = '2021-01-10'
    THEN DATE_VALUE = CAST('2021-01-11' AS DATE)
END AS DATE_VALUE
,HASH(
CASE 
    WHEN DATE_VALUE = '2021-01-10'::DATE
    THEN DATE_VALUE= '2021-01-11'::DATE 
END 
, COL
, COL
, COL
, COL
, COL
, COL
, COL
)
FROM TABLE1 
MINUS
SELECT
COL
,   DATE_VALUE
,   HASH(
DATE_VALUE
, COL
, COL
, COL
, COL
, COL
, COL
, COL
)
FROM TABLE2;

2 Answers

You have this expression for the second column:

(CASE WHEN DATE_VALUE = '2021-01-10'
      THEN DATE_VALUE = CAST('2021-01-11' AS DATE)
 END) AS DATE_VALUE

The THEN clause is:

DATE_VALUE = CAST('2021-01-11' AS DATE)

This is a boolean expression, not a date expression. You seem to want:

(CASE WHEN DATE_VALUE = '2021-01-10'
      THEN CAST('2021-01-11' AS DATE)
 END) AS DATE_VALUE

Or:

(CASE WHEN DATE_VALUE = '2021-01-10'
      THEN '2021-01-11'::DATE
 END) AS DATE_VALUE

CASE..WHEN is incorrect.

It should be

CASE 
    WHEN DATE_VALUE = '2021-01-10'
    THEN CAST('2021-01-11' AS DATE) -- DATE_VALUE = CAST('2021-01-11' AS DATE) returns boolean not date
END AS DATE_VALUE
2

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

David Miller
Author

David Miller

David Miller brings 15 years of experience in global economics, personal finance strategy, and market dynamics. He specializes in turning complex economic trends into actionable insights for everyday readers.