cancel
Showing results for 
Search instead for 
Did you mean: 
Data Engineering
Join discussions on data engineering best practices, architectures, and optimization strategies within the Databricks Community. Exchange insights and solutions with fellow data engineers.
cancel
Showing results for 
Search instead for 
Did you mean: 

SQL Sub Query Not Working

opl12
New Contributor II

Olá pessoal,
espero que todos estejam bem!

Por favor, você pode ajudar? ou orientação?

Está retornando um erro na instrução "CASE WHEN"

A lógica é a seguinte:
Se o campo `valor` FOR NULO ENTÃO
eu executo uma Sub Consulta usando os filtros:
origem, destino e dt
Nesta Sub Consulta quero trazer a maior data do campo `DT` da tabela ` tabeba_extracao` 

O erro ocorre na subconsulta, a mensagem de erro é esta:
ExtendedAnalysisException: [UNRESOLVED_COLUMN.WITH_SUGGESTION] Um parâmetro de coluna ou função com o nome `e`.`cb` não pode ser resolvido

 

obrigado!

aqui está a consulta SQL:

SELECT to_date ( e . `DT` ,  'yyyyMMdd' )  AS `Data`
	 , e . `origem`
	 , e . `destino`
	 , e . `cb`
	 , CASO  
		QUANDO d . `valor` É  NULO 
			ENTÃO  ( 
					SELECT b . `valor` FROM financeiro_proc . tbldadConversaoMoeda AS b WHERE b . `cb` = e . `cb`
						 AND b . `destino` = e . `destino`
						 AND b . `origem` = e . `origem`
						 AND to_date ( b . `data_do_dado` ,  'yyyyMMdd' )  =  ( 
							SELECT  MAX ( to_date ( C . `data_do_dado` ,  'yyyyMMdd' ) )  FROM tabela_categoria C WHERE C . `cb` = e . `cb `
								 AND C . `destino` = e . `destino`
								 AND C . `origem` = e . `origem`
								 AND to_date ( C . `data_do_dado` ,  'yyyyMMdd' )  < to_date ( e . `DT` ,  'yyyyMMdd' ) 
							)  GROUP  BY b .`valor` ) 
		ELSE d . _
					`valor`
		 END `valor` FROM tabeba_extracao e LEFT JOIN financeiro_proc . tbldadConversaoMoeda d ON e . `DT` = d . `data_do_dado`
	 AND e . `origem` = d . `origem`
	 AND e .`destino` = d . `destino`
	 AND e . `cb` = d . `cb` ;

#spark #sql

 

1 REPLY 1

lucasrocha
New Contributor III
New Contributor III

Olá @opl12 , tudo bem?

Se possível, poderia enviar a mensagem de erro completa?
Aparecerá uma lista separada por vírgulas de possíveis colunas logo após "Did you mean one of the following? [...]".
Poderia testar sem os `` e me informar o resultado?

Best regards,
Lucas Rocha