首页 > 解决方案 > 按行获取列名

问题描述

我有一个从 Excel 电子表格导入数据创建的表。该表当前如下所示: 在此处输入图像描述

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

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

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

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

......就像那样......这可能吗?

标签: sqlsql-server

解决方案


在任何数据库中执行此操作的一般方法是使用union all

select ClinicalPsycology as data, 'ClinicalPsycology' as column
from t
union all
select SpecialEducation as data, 'SpecialEducation' as column
from t
union all
. . .;

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


推荐阅读