我有一个用户个人资料表,其中包含User Name
,Manager
列以及许多其他字段,例如Amount
。
示例记录:
User Manager Amount
A B 100
x y 200
B C 300
M N 800
C D 500
P Q 1000
D E 1000
我想获得如下结果:
User Manager Amount
A B 100
B C 300
C D 500
D E 1000
基本上,我只想以级联方式显示结果,以便获取所有行,直到找到用户层次结构中的所有管理器。有人可以帮忙吗?
============
更新
我设法使用以下查询解决了问题:
WITH rec(c1, c2)
AS (SELECT c1, c2 FROM table WHERE c2 = 'A'
UNION ALL
SELECT table.c1, table.c2 FROM table, rec WHERE table.c2 = rec.c2)
SELECT c1, c2 FROM rec
感谢您的帮助。 ABHI。
答案 0 :(得分:1)
没有用于执行此操作的“标准”sql,但是大多数数据库扩展SQL以具有这些选项。
在Oracle中,您可以执行以下操作:
SELECT USER, Manager, Amount FROM employees CONNECT BY PRIOR USER = Manager;
请看一些例子: http://www.ibm.com/developerworks/data/library/techarticle/dm-0510rielau/ 对于db2示例