簡體   English   中英

Oracle-如何將多行選擇為帶有列的1行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM