按行获取列名

时间:2019-01-28 18:26:16

标签: sql sql-server

我有一个表是从Excel电子表格中导入数据而创建的。该表当前如下所示: enter image description here

我想从每一行中检索列名,或者创建一个包含几列Data和ColumnName的新表

因此,更清楚地说,例如ABAS-3位于ClinicalPsycology列下,我想创建一个临时表或至少在查询中返回ABAS-3的列名。

对我来说,理想的做法是创建一个如下所示的临时表:

     Data      ColumnName
---------------------------
    ABAS-3    ClinicalPsycology
    ADHDT-2   ClinicalPsycology
    AAB       SpecialEducation
    SAGES-3   Counseling

...那样……是可能的吗?

1 个答案:

答案 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
. . .;

某些数据库支持横向联接(通过lateralapply关键字)。这样的方法比在每一列上使用union all更为有效。