Nat*_*ati 1 sql oracle aggregate-functions
我有一个表格形式:
| ID | COURSE | PASS |
---------------------------
| 1 | 1 | 1 |
| 1 | 2 | 1 |
| 1 | 3 | 1 |
| 1 | 4 | 0 |
| 1 | 5 | 0 |
Run Code Online (Sandbox Code Playgroud)
我希望表格中的行:
| ID | FAILED | PASSED |
---------------------------
| 1 | 4,5 | 1,2,3 |
Run Code Online (Sandbox Code Playgroud)
唯一我认为是这样的:
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
Run Code Online (Sandbox Code Playgroud)
有没有办法在单个查询中执行此操作?
A.B*_*ade 10
尝试
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9053 次 |
| 最近记录: |