Sql 根据输入字符串从单个表中读取多列

Sql 根据输入字符串从单个表中读取多列,sql,apache-spark-sql,hiveql,pyspark-sql,Sql,Apache Spark Sql,Hiveql,Pyspark Sql,我想根据sql select语句中给定的输入字符串从单个表中选择多个列 例如: 如果input=table_medical,我想选择像medi_col1、medi_col2、medi_col2这样的列 如果输入=table_pharmacy,我想选择像medi_phar1、medi_phar2、medi_phar1这样的列 sqlselect 当$input=table\u medical然后medi\u col1//时的情况如下 请帮我完成这个 SET @input="table_medica

我想根据sql select语句中给定的输入字符串从单个表中选择多个列

例如:

如果input=table_medical,我想选择像medi_col1、medi_col2、medi_col2这样的列 如果输入=table_pharmacy,我想选择像medi_phar1、medi_phar2、medi_phar1这样的列

sqlselect 当$input=table\u medical然后medi\u col1//时的情况如下

请帮我完成这个

SET @input="table_medical";

SELECT
    CASE WHEN @input="table_medical" THEN medi_col1 ELSE medi_phar1 END  as medi_col1,
    CASE WHEN @input="table_medical" THEN medi_col2 ELSE medi_phar2 END  as medi_col2
    CASE WHEN @input="table_medical" THEN medi_col3 ELSE medi_phar3 END  as col3
FROM MyTable
medi_col1和medi_phar1的数据类型必须相同,其他列的数据类型也必须相同
如果您希望在单个查询中使用此功能,则需要相同数量的列,并且具有兼容的类型

一种方法使用union all:


谢谢你的回答,让我检查一下,然后再回来找你。我需要选择多个列,比如@input=table\u medical然后medi\u col1作为col1,medi\u col2作为col2,medi\u col3作为cols等等。。。怎么做?
select medi_col1, medi_col2, medi_col2
from t
where @input = 'table_medical'
union all
select medi_phar1, medi_phar2, medi_phar1
from t
where @input = 'table_pharmacy';