【发布时间】:2021-09-24 08:53:39
【问题描述】:
以下查询获取所有结果,但未正确分组,例如:
01 xxx
02 bbb
03 ccc
02 ddd
03 eee
03 fff
04 ggg
02 hhh
01 yyy
etc
我的结果以升序显示
WITH EXPL (LEVEL, I_TC_ITEM_ID, I_TC_PARNT_ITEM_ID ) AS
(
SELECT 1 as LEVEL,
ROOT.I_TC_ITEM_ID, ROOT.I_TC_PARNT_ITEM_ID
FROM DVMP.TC_PTV ROOT
WHERE
ROOT.C_VARIANT = DVMP.C_VARIANT AND
ROOT.I_TC_ITEM_ID = DVMP.I_TC_ITEM_ID
UNION ALL
SELECT LEVEL + 1,
CHILD.I_TC_ITEM_ID, CHILD.I_TC_PARNT_ITEM_ID
FROM EXPL PARENT, DVMP.TC_PTV CHILD
WHERE CHILD.I_TC_PARNT_ITEM_ID = PARENT.I_TC_ITEM_ID AND
CHILD.C_VARIANT = DVMP.C_VARIANT
)
SELECT *
FROM EXPL
order by level, I_TC_PARNT_ITEM_ID
得到部分结果:
LEVEL I_TC_ITEM_ID I_TC_PARNT_ITEM_ID
1 FC00ABF40383 FC00ABF39972
2 FC00ABF40384 FC00ABF40383
2 FC00ABF40385 FC00ABF40383
2 FC00ABF40386 FC00ABF40383
3 FC00AAA92586 FC00ABF40384
3 FC00ABI44739 FC00ABF40384
3 FC00ABI44739 FC00ABF40384
3 FC00ABY43106 FC00ABF40384
3 AGV21336 FC00ABF40385
3 FC00AAA11475 FC00ABF40385
3 FC00AAA11499 FC00ABF40385
3 FC00AAW37134 FC00ABF40385
3 FC00AAZ81249 FC00ABF40385
3 FC00ABD51310 FC00ABF40385
3 FC00ABD51315 FC00ABF40385
3 FC00ABD51338 FC00ABF40385
3 FC00ABS71006 FC00ABF40385
3 FC00ABS71019 FC00ABF40385
3 FC00AAA92586 FC00ABF40386
3 FC00ABI44739 FC00ABF40386
3 FC00ABI44739 FC00ABF40386
3 FC00ABY43105 FC00ABF40386
我想要的结果是这样的:
LEVEL I_TC_ITEM_ID I_TC_PARNT_ITEM_ID
1 FC00ABF40383 FC00ABF39972
2 FC00ABF40384 FC00ABF40383
3 FC00ABI44739 FC00ABF40384
3 FC00ABI44739 FC00ABF40384
3 FC00ABY43106 FC00ABF40384
2 FC00ABF40385 FC00ABF40383
3 AGV21336 FC00ABF40385
3 FC00AAA11475 FC00ABF40385
3 FC00AAA11499 FC00ABF40385
3 FC00AAW37134 FC00ABF40385
2 FC00ABF40386 FC00ABF40383
3 FC00AAA92586 FC00ABF40386
3 FC00ABI44739 FC00ABF40386
4 FC00ABI49612 FC00ABI44739
5 FC00ABZ53105 FC00ABI49612
【问题讨论】:
-
请仅使用相关列的一些数据样本(如 parent_id、child_id、desc)、您获得的结果和您想要的结果来编辑您的问题。如果没有实际数据,您的长 SQL 查询将毫无用处。要正确排序结果,您可以使用人工“链”列,其中您有当前行的所有父 ID 的分隔字符串表示,您在 ORDER BY 子句中使用。
标签: recursion db2 common-table-expression