sql在一个字段中选择父子递归

2024-01-07

我不知道如何选择递归查询..

 id     idparent    jobNO
--------------------------------
  1         0         1
  2         1         2
  3         1         3
  4         0         4
  5         4         5
  6         4         6

使用 SqlServer 怎么得到这样的结果

 id     idparent    jobNO   ListJob
----------------------------------------
  1         0         1        1
  2         1         2        1/2
  3         1         3        1/3
  4         0         4        4
  5         4         5        4/5
  6         5         6        4/5/6

您需要使用递归公用表表达式。

网上有很多有用的文章。

有用的链接

简单讲:SQL Server CTE 基础知识 https://www.simple-talk.com/sql/t-sql-programming/sql-server-cte-basics/

blog.sqlauthority:递归 CTE http://blog.sqlauthority.com/2008/07/28/sql-server-simple-example-of-recursive-cte/

这是您问题的解决方案:

   CREATE TABLE #TEST
    (
        id int not null,
        idparent int not null,
        jobno int not null
    );

    INSERT INTO #Test VALUES 
    (1,0,1),
    (2,1,2),
    (3,1,3),
    (4,0,4),
    (5,4,5),
    (6,5,6);

    WITH CTE AS (
-- This is end of the recursion: Select items with no parent
        SELECT id, idparent, jobno, CONVERT(VARCHAR(MAX),jobno) AS ListJob
        FROM #Test
        WHERE idParent = 0
    UNION ALL
-- This is the recursive part: It joins to CTE
        SELECT t.id, t.idparent, t.jobno,  c.ListJob + '/' + CONVERT(VARCHAR(MAX),t.jobno) AS ListJob
        FROM #Test t
        INNER JOIN CTE c ON t.idParent = c.id
    )
    SELECT * FROM CTE
    ORDER BY id;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sql在一个字段中选择父子递归 的相关文章

随机推荐

  • 更新新版本应用程序时删除sqlite数据库

    我已经上传了一个 apk 版本 1 0 其中有 22 个表SQLite数据库在 Google Play 商店上 现在我想在新版本 2 0 版 应用程序中更新包含 36 个表的数据库 我正在存储datebase在默认位置 所以当我按时 清除
  • Lua 中的 ISO 8601 时间戳

    如何将时间戳转换为 ISO 8601 格式 例如2009 01 28T21 49 59 000Z 在 Lua 中 我专门尝试使用HttpLua模块 http wiki nginx org HttpLuaModule在 Nginx 中 Try
  • JAI create 似乎使文件描述符保持打开状态

    我有一些旧代码直到最近才工作 但现在似乎很糟糕 因为它在使用 OpenJDK 6 而不是 Java SE 6 的新服务器上运行 问题似乎围绕着 JAI create 我有 jpeg 文件 我将其缩放并转换为 png 文件 这段代码过去工作时
  • ClassNotFoundException:重建后的 org.springframework.cglib.transform.impl.MemorySafeUndeclaredThrowableStrategy

    当尝试在 Tomcat 上运行我的项目时 我遇到了这个奇怪的错误 直到几天前 一切都还好 从那以后我就没有改变过任何一行代码 在一切开始失败之前我做的唯一一件事是 Maven 上下文菜单中的 更新项目 Aug 21 2013 4 39 48
  • HTML 自动嵌入最近从 YouTube 频道上传的视频

    我想知道是否有办法将最近上传的内容从 YouTube 频道自动嵌入到网站 我什至不知道从哪里开始 帮助 使用以下代码通过指定频道 ID 而不是频道名称来自动嵌入 YouTube 频道的最新视频 var channelID UC0xXUfNS
  • 是否可以在 macOS 上以编程方式更改 XDR 显示参考模式(又名预设)?

    Apple 的 XDR 显示器 例如 Pro Display XDR 和 Liquid Retina Display XDR 支持显示参考模式 也称为预设 这些可以在 系统首选项 gt 显示 gt 显示设置 gt 预设 中进行更改 选择 X
  • 在 Laravel 5.4 中将外键 bigInteger 设置为 bigIncrements

    因此 我尝试在 Laravel 的迁移文件中设置外键 以便用户表很简单 但我尝试使用 bigIncrements 而不是立场增量 public function up Schema create users function Bluepri
  • 将数据表拆分为小表 R

    我有一个下表 超过 1k 行 x1 x2 x3 x4 7809 243638 1 1 7809 243638 1 1 7809 243638 1 1 3453 222222 1 0 我需要根据第二列将此表拆分为小表 将在我的环境中作为数据框
  • 确保 CSV 输出中保留长数字

    我有一个 R 数据框 需要保存为 csv 文件 但是在保存为 csv 文件时 一个数字列会更改其格式 我有一个名为 ID 的字符列 如下所示 df lt data frame ID as character 1181050000000002
  • 将新选项卡添加到选项卡栏控制器

    我正在创建一个标签栏 iOS 应用程序 选项卡栏视图控制器有两个选项卡 每个选项卡都连接到一个视图控制器 它看起来是这样的 我需要向选项卡控制器添加更多选项卡 我在故事板中这样做如下 我添加了一个新的视图控制器 我按住 Control 键并
  • 从控制器重定向到项目外部的不同 URL

    我如何从我的控制器重定向到不同的网址 例如 yahoo com hotmail com 我正在使用 Spring 3 0 并使用配置而不是注释 我忘记提及的一件事是 url 将是用户输入 因此无法将其添加到配置中 谢谢 高卢人 您可以在控制
  • 如何强制应用程序更改 iOS/Objective-C 中的语言?

    我在让应用程序立即更改语言时遇到问题 例如this app https itunes apple com app zalo nhan tin kieu moi id579523206 mt 8 我发现了很多类似的问题this https s
  • subprocess.check_output() 没有输出

    我正在尝试在 Python 2 7 5 中运行以下代码 output subprocess check output commandList print len output 我的命令列表是一个参数列表 例如 ls l 但后来我发现即使我有
  • 在magento2中运行时设置包和主题

    我的包名称是 company 主题名称是 web 我还有另一个名为 system 的包 其主题名为 component 运行时来自块文件 但我想从 magento2 的前端设置该主题和包 如果您想在 magento 中运行时设置包和主题 只
  • 无法通过更改宽度或 Flex-basis 来隐藏 Flex 项目

    我想达到这样的效果 在默认状态下 有四个按钮 其中之一是 移动 按钮 当用户单击它时 我想展开按钮并显示其他文本和输入 但是我无法达到 默认状态 收件人 总是出现 我努力了flex basis and width 0px但没有效果 就像这样
  • 如何检测SearchView后退按钮按下?

    我使用单个活动来显示 SearchView 以及显示搜索结果 搜索结果只是项目的子集 因此搜索充当过滤器 一切似乎都工作正常 除了我不知道如何在单击 SearchView 的后退按钮时恢复视图中的所有项目 或者也许还有另一种方法来检测用户何
  • i = 0, ++i 定义了吗?

    我最近了解到 运算符以及它引入了一个事实序列点 我还了解到以下代码会导致未定义的行为 i i Because i在两个序列点之间修改了两次 但是下面的代码呢 i 0 i i 0 i 虽然我知道规则 但我无法得出结论 那么它是否是定义的行为
  • 需要在材质数据表中显示嵌套的 JSON 对象

    我需要将来自后端的嵌套 JSON 对象显示为 MatTableDataSource 的列字段 这是我的 JSON 对象 workstationId 100 assemblylineId 100 workstationDescription
  • 无法更改 git config 用户名,立即重置

    If I do git config global user name My New Name 它有效 只持续很短一段时间 如果我这样做 cat gitconfig 我可以看到正确的值user name财产 但是 一旦我打开新的终端窗口或进
  • sql在一个字段中选择父子递归

    我不知道如何选择递归查询 id idparent jobNO 1 0 1 2 1 2 3 1 3 4 0 4 5 4 5 6 4 6 使用 SqlServer 怎么得到这样的结果 id idparent jobNO ListJob 1 0