[英]Oracle - how to select multiple rows as 1 row with columns
我正在使用Oracle 12c,並且有多行返回的數據,我想切換到具有描述數據標題的單行選擇語句。 這里的問題是data列是CLOB。
這是一個示例(實際上,將是十幾行):
select ID, description, data from dual
|---------------------|------------------|------------------|
| ID | Description | Data |
|---------------------|------------------|------------------|
| 1 | DescriptionA | TestA |
|---------------------|------------------|------------------|
| 2 | DescriptionB | TestB |
|---------------------|------------------|------------------|
我希望它看起來像這樣:
|---------------------|------------------|
| DescriptionA | DescriptionB |
|---------------------|------------------|
| TestA | TestB |
|---------------------|------------------|
任何想法都將不勝感激!
謝謝!
您可以在以下情況下使用案例
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
這也是一個選項,如果您想使用動態值而不是對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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.