列出类别中的项目(SQL)

列出类别中的项目(SQL),sql,oracle,Sql,Oracle,我有如下数据集: +-----------------+---------------------+ | job_code | job_title | +-----------------+---------------------+ | finance_acct | Business Accountant | | finance_manager | Business Manager | | it_programmer | IT Programm

我有如下数据集:

+-----------------+---------------------+ | job_code | job_title | +-----------------+---------------------+ | finance_acct | Business Accountant | | finance_manager | Business Manager | | it_programmer | IT Programmer | | it_manager | IT Manager | +-----------------+---------------------+ +-----------------+---------------------+ |职务代码|职务名称| +-----------------+---------------------+ |财务会计业务会计| |财务经理|业务经理| |it程序员it程序员| |it经理| it经理| +-----------------+---------------------+ 等等

我想把所有共享相同前半部分职务代码的职务都打印成一个列表。例如:

+-----------------+---------------------+ | job_code | job_title | +-----------------+---------------------+ | finance_acct | Business Accountant | | finance_manager | Business Manager | | it_programmer | IT Programmer | | it_manager | IT Manager | +-----------------+---------------------+ 财务:业务会计、业务经理

it:it程序员、it经理

我该怎么做?我知道如何使用
SUBSTR
提取作业代码的第一部分。基本上我可以很好地创建左列。但我遇到了几个问题:

  • 使用
    GROUP BY
    命令,我不断得到ORA-00979错误(“非 由表达式组成的一组
  • 我不知道如何使列表用逗号分隔。我 使用了
    CONCAT
    ,但即使这样,后面也会有多余的逗号 给定行的最后一个条目。我在网上看到了一些关于
    STUFF
    命令,但我知道没有这个命令也可以这样做
  • 有什么建议吗?谢谢。

    试试这个功能。您可以指定分隔符,并根据需要的数据对其进行分组

    试试这个功能。您可以指定分隔符,并根据需要的数据对其进行分组

    regexp\u substr()
    job\u code
    中提取所需的零件。剩下的只是聚合和
    listag()

    regexp\u substr()
    想到从
    作业\u代码中提取所需的零件。剩下的只是聚合和
    listag()


    最好的方法是添加一列来指示类别,也可能添加一个单独的表,以便您可以将类别与类别描述分开。您使用的是哪一版本的Oracle DB server?这可能会影响可用选项(例如,所提到的
    listag
    功能在旧版本中不可用)。最好的方法是添加一列以指示类别,以及一个单独的表,以便您可以将类别与类别描述分开。您使用的是哪一版本的Oracle DB server?这可能会影响可用选项(例如,所述的
    listag
    功能在旧版本中不可用)。