MetricSign
Start free
High severitysql compilationSnowflake

Snowflake Error:
000904 (42000), Invalid Identifier

What does this error mean?

Snowflake cannot resolve the identifier referenced in the query — the column, table, or object does not exist, is misspelled, or is not visible to the active role in the current schema context. This is one of the most frequent Snowflake errors in production pipelines.

Common causes

  • 1A column was renamed in the source table but the query was not updated
  • 2Unquoted identifier in mixed case — Snowflake converts unquoted identifiers to uppercase, causing mismatches with quoted (case-sensitive) column names
  • 3A typo in the column, table, schema, or database name
  • 4Schema drift: the source table structure changed and a previously valid column no longer exists
  • 5Using a column alias in a WHERE clause (SQL evaluates WHERE before SELECT)

How to fix it

  1. 1Run DESCRIBE TABLE <name> or SELECT * LIMIT 1 to see the current column names and their exact case.
  2. 2Check whether the identifier is quoted with double quotes — if so, Snowflake treats it as case-sensitive.
  3. 3If the column was renamed, update the query to use the new column name.
  4. 4For alias usage in WHERE, move the condition to a subquery or CTE or replace the alias with the full expression.
  5. 5Use information_schema.columns to programmatically check column names.

Frequently asked questions

Why does Snowflake uppercase my column names?

Snowflake stores unquoted identifiers in uppercase by default. If a table was created with double-quoted column names (e.g., CREATE TABLE t ("myColumn" VARCHAR)), those names are case-sensitive and you must double-quote them in every query.

How can I check the exact column names in a Snowflake table?

Use DESCRIBE TABLE table_name or SELECT column_name FROM information_schema.columns WHERE table_name = 'TABLE_NAME'.

Source · docs.snowflake.com/en/error-codes/error-000904

Other sql compilation errors