gpt4 book ai didi

sql - 带有子表的自引用表

转载 作者:行者123 更新时间:2023-12-04 18:49:22 25 4
gpt4 key购买 nike

我有一个自引用表,内容如下:

Self-referencing parent table
ID ParentID Name
---------------------
1 John
2 1 Mike
3 2 Erin
4 1 Janie
5 Eric
6 5 Peter

树层次结构应如下所示
  • 约翰
  • 麦克风
  • 艾琳
  • 珍妮
  • 埃里克
  • 彼得

  • 还有一个存储父表叶子的子表,如下所示:
    ID  Sales
    3 100
    3 100
    4 200
    4 200
    6 300
    6 300
    6 300

    我正在尝试将叶节点的总和向上汇总到层次结构,以便它返回为 ..
    ID  Name    Sum
    1 John 800
    2 Mike 200
    3 Erin 200
    4 Janie 400
    5 Eric 900
    6 Peter 900

    任何想法如何在 sql 2008 中实现这一点?提前致谢。

    最佳答案

    编辑 所有聚合都移出了 CTE

    WITH
    tree AS
    (
    SELECT
    id AS root_id,
    name AS root_name,
    id AS leaf_id
    FROM
    yourTreeTable

    UNION ALL

    SELECT
    tree.root_id AS root_id,
    tree.name AS root_name,
    yourTreeTable.id AS leaf_id
    FROM
    tree
    INNER JOIN
    yourTreeTable
    ON tree.leaf_id = yourTreeTable.ParentID
    )
    SELECT
    tree.root_id,
    tree.root_name,
    COALESCE(SUM(yourScoresTable.score), 0) AS total
    FROM
    tree
    LEFT JOIN
    yourScoresTable
    ON yourScoresTable.ID = tree.leafID
    GROUP BY
    tree.root_id,
    tree.root_name

    关于sql - 带有子表的自引用表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8719855/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com