通过一次分组 2 列在表中执行反透视
Posted
技术标签:
【中文标题】通过一次分组 2 列在表中执行反透视【英文标题】:perform unpivoting in a table by grouping 2 columns at once 【发布时间】:2014-11-30 08:54:59 【问题描述】:我想在下表中执行反透视以获得如下所述的输出。
输入
====================================
| ID | Subj1 | Mark1 | Subj2 |Mark2|
====================================
|1 | Eng12 | 24 | Mth23 |NULL |
====================================
|2 | PSY42 | 54 |NULL | NULL|
====================================
输出
====================
| ID | Subj | Mark |
====================
|1 | Eng12 | 24 |
====================
|1 | MTh23 | NULL|
====================
|2 | PSY42 | 54 |
====================
【问题讨论】:
【参考方案1】:根据您的数据和预期输出
SELECT
id
, subj1 subj
, mark1 mark
FROM
SomeTable
UNION ALL
SELECT
id
, subj2
, mark2
FROM
SomeTable
WHERE
subj2 IS NOT NULL
;
【讨论】:
嗯,这是我没有注意到的一种使用方式。虽然它比 unpivot 慢一点。以上是关于通过一次分组 2 列在表中执行反透视的主要内容,如果未能解决你的问题,请参考以下文章