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_VALUEThe 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_VALUEOr:
(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