select column if not exists return as null - SQL



我有两种可能从两个不同的表中获取数据:表A和表B。

表B没有一列(ColumnD(,所以我想保留完整的模式

我尝试过使用Python(Spark(:

#input argument
table_argument = 'B'
spark.sql(f'''
SELECT 
ColumnA,
ColumnB,
ColumnC,
CASE
WHEN '{table_argument}' = 'B' THEN NULL
ELSE ColumnD 
END AS ColumnD
FROM {table_argument}''')

我总是得到错误,这是不可能得到的列D。When条件不起作用。

有可能这样做吗?

感谢

即使在未执行的WHEN子句中,也不能引用不存在的列。您需要使用Python条件来构造查询的该部分。

spark.sql(f'''
SELECT 
ColumnA,
ColumnB,
ColumnC,
{'NULL' if table_argument == 'B' else 'ColumnD'} AS ColumnD
FROM {table_argument}''')

最新更新