摆脱两列中的一列重复值 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
这种操作应该在表现层完成。
但是如果你坚持你可以使用像这样的东西:
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.
所以,我有两列 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
这种操作应该在表现层完成。
但是如果你坚持你可以使用像这样的东西:
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.