我有一个表是从Excel电子表格中导入数据而创建的。该表当前如下所示:
我想从每一行中检索列名,或者创建一个包含几列Data和ColumnName的新表
因此,更清楚地说,例如ABAS-3位于ClinicalPsycology列下,我想创建一个临时表或至少在查询中返回ABAS-3的列名。
对我来说,理想的做法是创建一个如下所示的临时表:
Data ColumnName
---------------------------
ABAS-3 ClinicalPsycology
ADHDT-2 ClinicalPsycology
AAB SpecialEducation
SAGES-3 Counseling
...那样……是可能的吗?
答案 0 :(得分:2)
在任何数据库中执行此操作的一般方法是使用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
或apply
关键字)。这样的方法比在每一列上使用union all
更为有效。