Concatenate column values from multiple rows in Oracle SQL

huangapple go评论84阅读模式
英文:

Concatenate column values from multiple rows in Oracle SQL

问题

以下是你要的翻译:

我想创建一个查询,根据ID列合并多行的列数值。

这是我的表的结构:

  1. ID Level
  2. 000 C
  3. 000 FK
  4. 111 F
  5. 222 FN
  6. 222 C
  7. 333 F
  8. 333 C
  9. 444 C

期望的结果应该如下:

  1. ID Level
  2. 000 C - FK
  3. 111 F
  4. 222 FN - C
  5. 333 F - C
  6. 444 C

我该如何在Oracle SQL Developer中实现这个?

英文:

I want to create a query to concatenate column values from multiple rows based in an ID column.

This is the structure of my table:

  1. ID Level
  2. 000 C
  3. 000 FK
  4. 111 F
  5. 222 FN
  6. 222 C
  7. 333 F
  8. 333 C
  9. 444 C

The expected result should be like this:

  1. ID Level
  2. 000 C - FK
  3. 111 F
  4. 222 FN - C
  5. 333 F - C
  6. 444 C

How can I do this in Oracle SQL Developer?

答案1

得分: 1

I will translate the provided SQL code snippet:

  1. Is `level` really your column name? Anyway, use `listagg`:
  2. Sample data:
  3. SQL> with test (id, c_level) as
  4. 2 (select '000', 'C' from dual union all
  5. 3 select '000', 'FK' from dual union all
  6. 4 select '111', 'F' from dual union all
  7. 5 select '222', 'FN' from dual union all
  8. 6 select '222', 'C' from dual union all
  9. 7 select '333', 'F' from dual union all
  10. 8 select '333', 'C' from dual union all
  11. 9 select '444', 'C' from dual
  12. 10 )
  13. Query:
  14. 11 select id,
  15. 12 listagg(c_level, ' - ') within group (order by null) result
  16. 13 from test
  17. 14 group by id
  18. 15 order by id;
  19. ID RESULT
  20. --- ----------
  21. 000 C - FK
  22. 111 F
  23. 222 FN - C
  24. 333 F - C
  25. 444 C
  26. SQL>;

Please let me know if you need further assistance.

英文:

Is level really your column name? Anyway, use listagg:

Sample data:

  1. SQL> with test (id, c_level) as
  2. 2 (select '000', 'C' from dual union all
  3. 3 select '000', 'FK' from dual union all
  4. 4 select '111', 'F' from dual union all
  5. 5 select '222', 'FN' from dual union all
  6. 6 select '222', 'C' from dual union all
  7. 7 select '333', 'F' from dual union all
  8. 8 select '333', 'C' from dual union all
  9. 9 select '444', 'C' from dual
  10. 10 )

Query:

  1. 11 select id,
  2. 12 listagg(c_level, ' - ') within group (order by null) result
  3. 13 from test
  4. 14 group by id
  5. 15 order by id;
  6. ID RESULT
  7. --- ----------
  8. 000 C - FK
  9. 111 F
  10. 222 FN - C
  11. 333 F - C
  12. 444 C
  13. SQL>

huangapple
  • 本文由 发表于 2023年3月31日 02:16:58
  • 转载请务必保留本文链接:https://go.coder-hub.com/75891667.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定