簡體   English   中英

在Oracle中的一個SQL Select中包含2個listagg

[英]2 listagg in one SQL Select in Oracle

我有一張表格,形式為:

| ID    | COURSE | PASS |
---------------------------
| 1     | 1      | 1      |
| 1     | 2      | 1      |    
| 1     | 3      | 1      |
| 1     | 4      | 0      |
| 1     | 5      | 0      |

我想要表格形式的行:

| ID    | FAILED | PASSED |
---------------------------
| 1     | 4,5    | 1,2,3  |

我唯一想到的是這樣的:

    select NVL(passed.id, failed.id), passed.test, failed.test from 
        (select id, listagg(course, ',') within group (order by course) test from table1 where pass = 1 group by id ) passed 
    full outer join
        (select id, listagg(course, ',') within group (order by course) test from table1 where pass = 0 group by id ) failed
    on passed.id = failed.id

有沒有辦法在單個查詢中做到這一點?

嘗試

select  id, 
  listagg(case when pass = 1 then course end, ',') within group (order by course) passed,
  listagg(case when pass = 0 then course end, ',') within group (order by course) failed
from table1
group by id

這是一個sqlfiddle演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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