SQL Server 函数获取层次结构中的顶级父级

2024-01-21

我有下表(master_group)结构:

code    name                      under 

1       National Sales Manager    1
2       regional sales manager    1 
3       area sales manager        2 
4       sales manager             3

如何获得特定行的最终父级,例如:

code    name                      under     ultimateparent

1       National Sales Manager    1         1
2       regional sales manager    1         1
3       area sales manager        2         1
4       sales manager             3         1

递归 cte 从顶部到子级:

with cte as(
  select *, code as ultimate from t where code = under
  union all
  select t.*, c.ultimate from t
  join cte c on c.code = t.under
  where t.code <> t.under
)
select * from cte

对于数据:

create table t (code int, name varchar(100), under int)
insert into t values
(1, 'National Sales Manager', 1),
(2, 'regional sales manager', 1),
(3, 'area sales manager', 2),
(4, 'sales manager', 3),
(5, 'a', 5),
(6, 'b', 5),
(7, 'c', 5),
(8, 'd', 7),
(9, 'e', 7),
(10, 'f', 9),
(11, 'g', 9)

它生成输出:

code    name                    under   ultimate
1       National Sales Manager  1       1
5       a                       5       5
6       b                       5       5
7       c                       5       5
8       d                       7       5
9       e                       7       5
10      f                       9       5
11      g                       9       5
2       regional sales manager  1       1
3       area sales manager      2       1
4       sales manager           3       1

Fiddle http://sqlfiddle.com/#!6/17c12e/1 http://sqlfiddle.com/#!6/17c12e/1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL Server 函数获取层次结构中的顶级父级 的相关文章

  • SQL Server 存储过程对象名称无效

    我在尝试修改现有存储过程时收到此错误 Invalid object name dbo BackupDB 我能够创建此存储过程 但是当我单击修改选项来修改此存储过程时 系统显示了上述错误 您会看到所附图片 当尝试执行此命令时 我也遇到同样的错
  • MySQL如何进行浮点加法的数学计算?

    我测试过SELECT 0 1 0 2 用MySQL MariaDB 查询 它返回了正确的答案 MariaDB none gt SELECT 0 1 0 2 0 1 0 2 0 3 1 row in set 0 000 sec 在大多数编程语
  • SQL 选择与带有通配符的 URL 匹配的行

    我在数据库中有一个表 其中一列包含一个 URL 例如http example com users http example com users 轮廓 我得到了一个 URL 例如http example com users 234 profi
  • REPLACE MYSql 中的新行字符不起作用

    我执行了以下查询 由于某种原因它没有替换数据库中的换行符 它说 Rows matches 1 但没有变化 有什么问题吗 mysql gt UPDATE aboutme SET abouttext REPLACE abouttext n WH
  • 通过网络恢复数据库备份

    如何通过网络使用 SQL Server 2005 恢复数据库备份 我记得以前这样做过 但这样做的方式有些奇怪 您几乎没有选择使用网络文件作为备份源 在与 MS SQL Server 相同的用户下映射网络驱动器 路径 托管文件 使用 xp c
  • 为什么 SQL Server 不推荐使用 SET ANSI_PADDING OFF?

    根据 MSDN BOL 在线书籍 SET ANSI PADDING http msdn microsoft com en us library ms187403 aspx 在 Microsoft SQL Server 的未来版本中 ANSI
  • SQL 性能,使用 OPTION (FAST n)

    谁能告诉我在 SQL 查询中使用 OPTION FAST n 有什么缺点 比如我这么快就抓取了10万条记录 但这对SQL Server的其他进程有影响吗 我正在接近我的问题 我必须每周运行一次数据处理 因此 第一个结果会在 5 7 秒后出现
  • 如何获取共同好友列表

    你好 我想知道如何才能找到共同的朋友 我目前在思考这个问题时遇到问题 我有一个名为 users 的表 它是这样的 id name 1 Kenny 2 Jack 3 Jimmy 4 Chris 5 Meg 6 Jake 7 Micheal 8
  • 将服务器添加到 SQL Management Studio

    我想将不同服务器上的一堆 SQL 2000 2005 的混合 服务器实例添加到我的 SSMS SQL Managment Studio 注册服务器 我正在遵循本教程here http sev17 com 2008 12 registerin
  • Linq lambda表达式多对多表选择

    我有三个表 其中两个是多对多关系 Picture 这是中间mm表中的数据 Edit 到这里 我得到正确的 4 行返回 但它们都是相同的结果 我知道我需要返回 4 行 但有不同的结果 return this mediaBugEntityDB
  • SQL FORMAT 函数错误

    这个SQL select FORMAT lNum from rpt myView 产生以下错误 参数数据类型 varchar 对于格式的参数 1 无效 功能 lNum is a varchar 10 运行 SQL Server 2012 v
  • MySQL 中有“connect by”替代方案吗?

    如果我使用 Oracle 有connect by可用于创建分层查询的关键字 目前我正在一个项目中使用MySQL 我想知道是否有替代方案connect by在 MySQL 中 我尝试过谷歌 但到目前为止还没有结果 我想要实现的是通过一个查询从
  • 查找 SQL Server 中表的 B 树高度

    由于数据库数据以B Tree的形式组织在8k页中 对于PK信息也是如此 数据库中的每个表都应该可以计算B Tree的高度 从而揭示达到某些数据需要多少次跳跃 由于行大小和 PK 大小都非常重要 因此很难计算 因为例如varchar 250
  • 在 WHERE 子句中使用可选参数

    我有一个SP ALTER PROCEDURE dbo sp Compare lst varchar 100 frst varchar 100 NULL passportNo varchar 50 NULL AS SELECT FROM db
  • sql查询中case语句中的布尔值

    我在选择查询中使用 case 语句 类似这样 Select col1 col2 isActive case when col3 abc then 1 else 0 end col4 from
  • MSSQL:如何使用代码编写存储过程创建脚本?

    我正在尝试使用一个数据库中存在但另一个数据库中不存在的 information schema routines 查询存储过程定义列表 SELECT t1 Routine Definition FROM server1 MyDatabase
  • 我想从 Crystal Report .rpt 文件中提取 SQL 查询,有办法做到这一点吗?

    我想从 Crystal Report rpt 文件中提取 SQL 查询 有办法做到这一点吗 我没有任何 Crystal Reports 产品 只有 rpt 文件 下面是一个 Net 代码示例 它从给定目录中的所有 Crystal Repor
  • max()、分组依据和排序依据

    我有以下 SQL 语句 SELECT t client id max t points AS max FROM sessions GROUP BY t client id 它只是列出了客户 ID 以及他们所获得的最大积分 现在我想按 max
  • SSIS Master 包执行来自另一个项目的包

    我有多个SSIS项目 但其中的一些包是相同的 我想创建一个包含所有内容的项目generic包并将其他项目与他们的特定包一起保存 所以我的问题是 是否有可能有一个主包可以执行并将父变量传递给另一个项目的包 我是 SSIS 新手 如果这是一个明
  • JbdcTemplate - 带有动态 SQL 查询的PreparedStatements

    I know jdbcTemplate可以用来创建PreparedStatements如果你这样设置 i e private JdbcTemplate jdbcTemplate String sqlQuery Select from tab

随机推荐

  • socket.io - 为一个套接字获取多个字段?

    当用户断开连接时 我有以下代码 我想发出带有房间名称和用户名的信号 client get nickname function err name client get room function err2 room io sockets in
  • 如果启用静态压缩,IIS 中的 gzip js 不会被压缩

    我已经使用 Squishit 来缩小和捆绑 JS 并压缩捆绑文件我在 IIS 7 5 中启用了选项 启用静态内容压缩 问题是 Js 没有被压缩 我只是得到缩小的 js 但如果我启用动态内容压缩 那么 Js 就会被压缩 现在动态压缩的问题是它
  • scanf从一个输入读取多种数据类型

    所以我试图读入以下形式的方程mx b y 我该如何使用scanf读取多种数据类型 我尝试过使用类似的东西 scanf d c c d c d num1 variable sign num2 equal sign num3 在这种格式下 它读
  • 如何在Keycloak中创建脚本映射器?

    我需要在 Keycloak 中创建一个 Script Mapper 类型的协议映射器 该脚本应该获取用户属性 检查其大小 并将其放在令牌上 我没有找到有关如何创建脚本的文档或示例 从我收集到的零碎信息来看 我想脚本需要看起来像这样 var
  • Windows 10 CLI 终端中的“git log”输出编码问题

    Problem 我怎样才能使git log命令输出是否正确显示在 Windows CLI 终端中 Example 正如您所看到的 我可以正确输入变音字符 但是git log 输出以某种方式被转义 根据UTF 8编码表 http www ut
  • Android Gradle 如何为 Android 构建 Google API 4.2.2 而不是 Android 4.2.2

    是否可以使用 gradle 为 Android Google APIs SDK 构建而不是通用的 Android SDK 我的项目中需要 Google Maps API 因此我需要更改构建目标 我只能找到构建版本为 17 的示例 编译SDK
  • Keras 代码有问题 Q-learning OpenAI 健身房 FrozenLake

    也许我的问题会显得很愚蠢 我正在研究 Q learning 算法 为了更好地理解它 我正在尝试重新制作 Tenzorflow 代码这个结冰的湖 https medium com emergent future simple reinforc
  • 如何使用 Swift 2.0 和反射获取属性名称及其值?

    给定这个模型 public class RSS2Feed public var channel RSS2FeedChannel public init public class RSS2FeedChannel public var titl
  • 具有两种方式绑定的 Angular 4 单元测试形式。从视图更新模型时出现问题

    我偶然发现了一个奇怪的问题 我正在使用基于模板的表单和双向绑定执行单元测试 这是测试代码 describe Template Forms Input gt beforeEach gt TestBed configureTestingModu
  • 不希望 netbeans 调试器进入反汇编窗口

    我使用 NetBeans IDE 7 4 内部版本 201310111528 进行 C 编程 每次我调试程序时 对于每个 printf 和 scanf 或者可能每个系统调用 它都会打开反汇编窗口并遍历每个汇编代码 我只是想观察变量 与此类函
  • 在 iOS 4 中本地化应用程序图标

    好吧 这个让我发疯了 我已经使用 InfoPlist strings 和特定于语言的 CFBundleIconFile 值对我的应用程序图标进行了本地化 为每种支持的语言选择不同的图标 从 iOS 4 开始 这种方法不再有效 我正在努力寻找
  • PyQt:在运行时翻译模块字符串

    字符串在QObjects 在运行时翻译 如果翻译器发生变化 所有这些字符串都会刷新 但是 在模块级别声明的字符串甚至静态类属性都会在导入时进行翻译 我可以看到 3 种允许翻译模块字符串的方法 但其中没有一种让我完全满意 安装翻译器后导入模块
  • 在PowerShell中从绝对路径获取相对路径

    问题 您有一个绝对路径 但您希望它相对于另一个路径 Example P SO data database txt gt Now we want the filename to be relative to P SO team lists d
  • 在非焦点 ToolStripItem 上显示工具提示

    当您将鼠标悬停在 ToolStripItems 上时 它们会显示活动突出显示 即使它们所在的表单未处于焦点状态 但是 除非表单获得焦点 否则它们不会显示工具提示 我见过ToolStrip 点击通过 黑客 http blogs msdn co
  • kubectl 无法从私有存储库中提取镜像

    我正在运行 kubeadm alpha 版本来设置我的 kubernates 集群 我正在尝试从 kubernates 提取托管在 nexus 存储库中的 docker 镜像 当我尝试创建一个 Pod 时 它每次都会给出 ImagePull
  • 低延迟模式与 Linux 串行端口一起使用是否安全?

    在 Linux 串行端口上使用 low latency tty 模式是否安全 这tty flip buffer push https github com torvalds linux blob master drivers tty tty
  • 在 Windows Phone 8.1 中使用加速度计传感器数据在画布上绘制线条

    我正在根据设备移动在画布上绘图 我想根据移动移动在画布上绘制不同的字符 目前它正在工作 但我想找到时间差 并且我想检测暂停 暂停意味着用户没有尝试绘制并且用户没有移动手机 因此应用程序可以假设现在用户想要绘制下一个字符 如何找到加速度计值的
  • 打散列

    哈希上的 splat 将其转换为数组 foo bar gt foo bar 这里是否存在一些隐藏机制 例如隐式类转换 或者它是内置的原始功能 除了数组之外 还有nil并哈希唯一在 Ruby 1 9 下使用 splat 运算符消失 改变的东西
  • 在 C 中等待/暂停一定秒数

    我编写了一个小控制台应用程序 我希望它在循环 一段时间 再次开始之前暂停一定的秒数 我正在使用 Windows 操作系统 在 Windows 上 执行此操作的函数是Sleep 这需要量毫秒你想睡觉 使用Sleep 你需要包括windows
  • SQL Server 函数获取层次结构中的顶级父级

    我有下表 master group 结构 code name under 1 National Sales Manager 1 2 regional sales manager 1 3 area sales manager 2 4 sale