sql - 按行获取列名
问题描述
我有一个从 Excel 电子表格导入数据创建的表。该表当前如下所示:
我想从每一行中检索列名,或者创建一个包含几列 Data 和 ColumnName 的新表
因此,更清楚的是,例如 ABAS-3 在 ClinicalPsycology 列下,我想创建一个临时表或至少在查询中返回 ABAS-3 的列名。
对我来说理想的情况是创建一个如下所示的临时表:
Data ColumnName
---------------------------
ABAS-3 ClinicalPsycology
ADHDT-2 ClinicalPsycology
AAB SpecialEducation
SAGES-3 Counseling
......就像那样......这可能吗?
解决方案
在任何数据库中执行此操作的一般方法是使用union all
:
select ClinicalPsycology as data, 'ClinicalPsycology' as column
from t
union all
select SpecialEducation as data, 'SpecialEducation' as column
from t
union all
. . .;
一些数据库支持横向连接(通过lateral
orapply
关键字)。这样的方法将比union all
在每列上使用更有效。