我正在使用Oracle 12c,并且有多行返回的数据,我想切换到具有描述数据标题的单行选择语句。 这里的问题是数据列是CLOB。
这里是一个示例(实际上,这将是一排):
select ID, description, data from dual
|---------------------|------------------|------------------|
| ID | Description | Data |
|---------------------|------------------|------------------|
| 1 | DescriptionA | TestA |
|---------------------|------------------|------------------|
| 2 | DescriptionB | TestB |
|---------------------|------------------|------------------|
我希望它看起来像这样:
|---------------------|------------------|
| DescriptionA | DescriptionB |
|---------------------|------------------|
| TestA | TestB |
|---------------------|------------------|
任何想法都将不胜感激!
谢谢!
答案 0 :(得分:1)
您可以在以下情况下使用大小写
with t(ID, Description,Data) as
(
select 1, 'DescriptionA','TestA' from dual
union all
select 2, 'DescriptionB','TestB' from dual
)
select max( case when Data='TestA' then Data end) as DescriptionA,
max(case when Data='TestB' then Data end) as DescriptionB from t
DESCRIPTIONA DESCRIPTIONB
TestA TestB
答案 1 :(得分:1)
这里也是一个选项,如果您想使用动态值而不是对ID列进行硬编码,则可以使用动态查询。
SELECT MAX(DECODE(T.ID, 1, T.TE)) AS DES1,
MAX(DECODE(T.ID, 2, T.TE)) AS DES2
FROM (SELECT 1 as id, 'DescriptionA' AS DES, 'TestA' AS TE FROM DUAL
UNION ALL
SELECT 2 as id, 'DescriptionB' AS DES, 'TestB' AS TE FROM DUAL)T