摆脱两列中的一列重复值 select

Get rid from one column duplicate values in two column select

所以,我有两列 t1.NAME 和 t2.ITEMS,对于每个 neme 可以分配多个项目,所以我想 select :

| NAME | ITEMS |
  JOHN    1
          2
  BEN     4
          7
          3
  DAVE    5

P.s。如果有帮助,他们通过 t1.id = t2.names_id

连接

我下面的查询结果非常接近你想要的..唯一的区别是,没有空白名称,因为你不能直接在一步查询中得到那个结果..每个项目都属于每个名称t1 中的 ID。但是如果你想得到准确的结果,你可以在那里做一些技巧,你可以使用 UPDATE 对结果做一些技巧。

    SELECT t1.NAME, t2.ITEMS
    FROM t1 INNER JOIN t2 ON t1.id = t2.names_id

这种操作应该在表现层完成。

但是如果你坚持你可以使用像这样的东西:

SqlFiddleDemo

SELECT DISTINCT NAME,
      LISTAGG(Items,  chr(13)||chr(10)) WITHIN GROUP (ORDER BY 1) OVER (PARTITION BY Name) AS Items
FROM tab

使用产生您现在得到的输出的子查询更改选项卡。

线索是将每个名称对应的Items拼接起来,并添加换行符CHR(13) + CHR(10)

我通常在 SQL*Plus 中进行,这都是关于 格式化输出 .

您可以使用 BREAK ON column_name.

例如,

SQL> break on deptno
SQL> SELECT deptno, ename FROM emp order by deptno;

    DEPTNO ENAME
---------- ----------
        10 CLARK
           KING
           MILLER
        20 JONES
           FORD
           ADAMS
           SMITH
           SCOTT
        30 WARD
           TURNER
           ALLEN
           JAMES
           BLAKE
           MARTIN

14 rows selected.