Сообщение об ошибке сообщает, что вы выполняете коррелированный подзапрос, который Snowflake не поддерживает. Какой SQL сервер поддерживает.
Теперь ваш вопрос был отредактирован, поэтому контекст более заметен. Я вижу, что проблема отмечена, как указано выше.
Во-первых, даже если это сработало, вы получите нет результатов, так как в вашем случае сравнение 'can' с 'Can' и в строках снежинки сравнивается с учетом регистра.
Во-вторых, CTE ваших данных может быть переписан как
WITH cte AS (
SELECT * FROM VALUES ('CAN', 1), ('Ban', 2) v(a, b)
)
, что позволяет добавлять больше строк проще.
Общее правило - не вызывать функции в ФИЛЬТРАХ, поэтому TRIM
должны выполняться в ваших CTE:
WITH cte AS (
SELECT TRIM(a) AS a, b FROM VALUES ('CAN', 1), ('Ban', 2) v(a, b)
)
и
WITH cte AS (
SELECT TRIM(column1) AS drky
,TRIM(column2) AS drsy
,TRIM(column3) AS drrt
,TRIM(column4) AS drdl01
FROM VALUES ('can', '1', '2', 'output1');
)
и, таким образом, это будет работать, если мы проигнорируем отсутствие совпадающих данных:
WITH cte AS (
SELECT TRIM(a) AS a, b FROM VALUES ('CAN', 1), ('Ban', 2) v(a, b)
), Status_Descriptiontest AS (
SELECT TRIM(column1) AS drky
,TRIM(column2) AS drsy
,TRIM(column3) AS drrt
,TRIM(column4) AS drdl01
FROM VALUES ('can', '1', '2', 'output1')
)
SELECT sd.drdl01 as description,
c.*
FROM cte AS c
JOIN Status_Descriptiontest AS sd
ON sd.DRKY = c.a and sd.DRSY = '1' AND sd.DRRT = '2';
, поэтому переходим к ILIKE
, чтобы получить точное совпадение без учета регистра:
WITH cte AS (
SELECT TRIM(a) AS a, b FROM VALUES ('CAN', 1), ('Ban', 2) v(a, b)
), Status_Descriptiontest AS (
SELECT TRIM(column1) AS drky
,TRIM(column2) AS drsy
,TRIM(column3) AS drrt
,TRIM(column4) AS drdl01
FROM VALUES ('can', '1', '2', 'output1')
)
SELECT sd.drdl01 as description,
c.*
FROM cte AS c
JOIN Status_Descriptiontest AS sd
ON sd.DRKY ilike c.a and sd.DRSY ilike '1' AND sd.DRRT ilike '2';
дает:
DESCRIPTION A B
output1 CAN 1
Фактически все, что вы хотите сделать в функции SQL, вы можете сделать в CTE, так что вы также можете сделать это.