Oracle SQL-将列转换为行,同时保留一列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle SQL-将列转换为行,同时保留一列相关的知识,希望对你有一定的参考价值。
我有下表(它实际上是从复杂逻辑派生的视图):
| TYPE | FIELD1 | FIELD2 | FIELD3 | FIELDNEEDSTOSTAYASCOLUMN |
|---------|--------|--------|--------|--------------------------|
| bad | 1 | 1 | 1 | 1000 |
| neutral | 2 | 2 | 2 | 1000 |
| good | 3 | 3 | 3 | 1000 |
我需要将其转到下面。占据所有列并将它们移动为thr行,但是我需要保留最后一列。
| FIELD | BAD | NEUTRAL| GOOD | FIELDNEEDSTOSTAYASCOLUMN |
|---------|--------|--------|--------|--------------------------|
| FIELD1 | 1 | 1 | 1 | 1000 |
| FIELD2 | 2 | 2 | 2 | 1000 |
| FIELD3 | 3 | 3 | 3 | 1000 |
我曾尝试使用ORacl的PIVOT和UNPIVOT,但无法创建它。
这是sql的小提琴:
答案
select field, bad, neutral, good, fieldneedstostayascolumn
from mytable
unpivot (val for (field, ord) in (field1 as ('FIELD1', 1), field2 as ('FIELD2', 2),
field3 as ('FIELD3', 3)))
pivot (min(val) for type in ('bad' as bad, 'neutral' as neutral, 'good' as good))
order by ord
;
FIELD BAD NEUTRAL GOOD FIELDNEEDSTOSTAYASCOLUMN
------ ---- ------- ---- ------------------------
FIELD1 1 2 3 1000
FIELD2 1 2 3 1000
FIELD3 1 2 3 1000
另一答案
您去这里
以上是关于Oracle SQL-将列转换为行,同时保留一列的主要内容,如果未能解决你的问题,请参考以下文章