数据合并显示的问题

伍子V5 2008-05-21 12:03:57
deptno, deptname, name,
1 部门一 张三
1 部门一 李四
1 部门一 王五
2 部门二 赵六
2 部门二 刘七

上面的数据如何通过一条sql显示成下面的格式

deptno, deptname, name,
1 部门一 张三
李四
王五
2 部门二 赵六
刘七
...全文
146 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hebo2005 2008-05-21
  • 打赏
  • 举报
回复
其实最好应该是这样的

SELECT DECODE (rn1, 1, deptno, NULL) deptno,
DECODE (rn2, 1, deptname, NULL) deptname, NAME
FROM (SELECT a.*,
ROW_NUMBER () OVER (PARTITION BY deptno ORDER BY deptname,
NAME) rn1,
ROW_NUMBER () OVER (PARTITION BY deptno, deptname ORDER BY NAME)
rn2
FROM a
ORDER BY a.deptno, deptname, NAME)

这样能保证输出结果按正确的顺序显示
否则万一你的数据不是顺序插入的,显示出来会混乱的
hebo2005 2008-05-21
  • 打赏
  • 举报
回复
/* Formatted on 2008/05/21 13:44 (Formatter Plus v4.8.8) */
WITH a AS
(SELECT 1 deptno, '部门一' deptname, '张三' NAME
FROM DUAL
UNION ALL
SELECT 1, '部门一', '李四'
FROM DUAL
UNION ALL
SELECT 1, '部门一', '王五'
FROM DUAL
UNION ALL
SELECT 2, '部门二', '赵六'
FROM DUAL
UNION ALL
SELECT 2, '部门二', '刘七'
FROM DUAL)


SELECT DECODE (ROW_NUMBER () OVER (PARTITION BY deptno ORDER BY deptname,
NAME),
1, deptno,
NULL
) deptno,
DECODE
(ROW_NUMBER () OVER (PARTITION BY deptno, deptname ORDER BY NAME),
1, deptname,
NULL
) deptname,
NAME
FROM a



结果
Row# DEPTNO DEPTNAME NAME

1 1 部门一 李四
2 王五
3 张三
4 2 部门二 刘七
5 赵六
hebo2005 2008-05-21
  • 打赏
  • 举报
回复
这个办法是有,不过我觉得这样显示有什么意义?
你可以用lag来取上一条来做判断
我写语句,先去测试好贴出来
伍子V5 2008-05-21
  • 打赏
  • 举报
回复
up
Airroll 2008-05-21
  • 打赏
  • 举报
回复
聚合+group by

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧