表结构如下

是一张递归格式的表

使用SQL转换成如下格式

SQL实现

使用SQL转换成上图的格式

SQL代码:

WITH T_Recur
AS
(
SELECT Id,1 num, cast(name as nvarchar(512)) as src
, name as l1, cast('' as nvarchar(16)) l2, cast('' as nvarchar(16)) l3, cast('' as nvarchar(16)) l4
, cast('' as nvarchar(16)) l5, cast('' as nvarchar(16)) l6, cast('' as nvarchar(16)) l7
FROM [TestDB].[dbo].[Recursion] WHERE Pid is NULL
UNION all
SELECT r.Id, t.num+1 num,cast(t.src+r.Name as nvarchar(512)) as src
,t.l1
,CASE WHEN t.num=1 THEN r.name
when t.num>1 Then t.l2
ELSE cast('' as nvarchar(16)) END
,CASE WHEN t.num=2 THEN r.name
when t.num>2 Then t.l3
ELSE cast('' as nvarchar(16)) END
,CASE WHEN t.num=3 THEN r.name
when t.num>3 Then t.l4
ELSE cast('' as nvarchar(16)) END
,CASE WHEN t.num=4 THEN r.name
when t.num>4 Then t.l5
ELSE cast('' as nvarchar(16)) END
,CASE WHEN t.num=5 THEN r.name
when t.num>5 Then t.l6
ELSE cast('' as nvarchar(16)) END
,CASE WHEN t.num=6 THEN r.name
when t.num>6 Then t.l7
ELSE cast('' as nvarchar(16)) END
from [TestDB].[dbo].[Recursion] r JOIN T_Recur t on r.PId=t.Id
) select l1 '一级部门', l2 '二级部门', l3 '三级部门', l4 '四级部门', l5 '五级部门', l6 '六级部门', l7 '七级部门'
from T_Recur -- 多送三个部门

结束

我觉得挺离谱的,这是线上的笔试,离开笔试界面会有警告,我就没用开发工具写,相当于是手写SQL了。

我当时没写出来,好久没用case,都用错了。当时case的判断我是用的==,正确写法是单等号=。我当时就随便写了一段case代码和递归SQL,然后说明了一下实现思路用case+cte实现。

一道SQL面试题的更多相关文章

  1. 一道sql面试题(查询语句)

    一道sql面试题(查询语句)   id name age 1  a        11 2  b        11 3  c        12 4  d        13 5  e        ...

  2. 汽车之家一道SQL 面试题,大家闲来无事都来敲一敲

    写在前面 上周去汽车之家面试,拿到这个SQL笔试题顿时感觉到有些陌生,因为好长时间不写SQL语句了,当时只写了表设计,示例数据和SQL语句都没写出来. 汽车之家应该用的SQL Server, 编程题一 ...

  3. 一道SQL面试题——表行列数据转换(表转置)

    SQL语句如下: select country, sum(case when type='A' then money end) as A, sum(case when type='B' then mo ...

  4. 一道SQL的面试题之联想

    一道SQL的面试题之联想 本人工作在一家小型的民营企业,主要从事业务系统的日常维护,二次开发,菜鸟一枚.周五经理准备面试两个开发人员,据简历,都还比较不错,让经理产生了想法,于是准备了一套面试题目,给 ...

  5. sql经典试题

    1.一道SQL语句面试题,关于group by表内容:2005-05-09 胜2005-05-09 胜2005-05-09 负2005-05-09 负2005-05-10 胜2005-05-10 负2 ...

  6. 必会SQL笔试题

    ()表名:购物信息 购物人 商品名称 数量 A 甲 B 乙 C 丙 A 丁 B 丙 …… 给出所有购入商品为两种或两种以上的购物人记录 答:); ()表名:成绩表 姓名 课程 分数 张三 语文 张三 ...

  7. sql面试题一 学生成绩

    sql面试题一 学生成绩   原帖链接:http://topic.csdn.net/u/20081020/15/1ABF54D0-F401-42AB-A75E-DF90027CEBA0.html 表架 ...

  8. 经典的SQL面试题

    SQL中 inner join. left join .right join. outer join之间的区别 A表(a1,b1,c1) B表(a2,b2) a1 b1 c1 a2 b2 01 数学 ...

  9. 一道 JavaScript 面试题

    有一道 JavaScript 面试题. f = function () { return true; }; g = function () { return false; }; (function() ...

  10. SQL面试题1

    SQL面试题 Sql常用语法 下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言 ...

随机推荐

  1. My97DatePicker设置默认时间

    <%@ page language="java"  pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC ...

  2. sqlplus清屏方法

    cmd中使用:host cls 或 clear screen或 clear scre或clea scr

  3. 基于Rust的Tile-Based游戏开发杂记(01)导入

    什么是Tile-Based游戏? Tile-based游戏是一种使用tile(译为:瓦片,瓷砖)作为基本构建单位来设计游戏关卡.地图或其他视觉元素的游戏类型.在这样的游戏中,游戏世界的背景.地形.环境 ...

  4. 【个人笔记】Nestjs使用TypeORM注意点

    在Nestjs使用TypeORM还是有一些注意点. entities路径配置注意点 在nestjs中使用TypeORM,需要配置数据库连接(以MySQL为例).需要特别注意的是配置参数里面的entit ...

  5. 记录--你知道Vue中的Scoped css原理么?

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 追忆Scoped 偶然想起了一次面试,二面整体都聊完了,该做的算法题都做出来了,该背的八股文也背的差不多了,面试官频频点头,似乎对我的基础 ...

  6. 用免费GPU部署自己的stable-diffusion项目(AI生成图片)

    2021年时出现了 openAI 的 DALL,但是不开源.2022年一开年,DALL-E 2发布,依然不开源.同年7月,Google 公布其 Text-to-Image 模型 Imagen,并且几乎 ...

  7. Scratch基础(一):安装和了解软件

    Scratch基础(一):安装和了解软件 编写计算机程序代码的能力是当今社会读写能力的重要组成部分.当人们学习使用Scratch进行编码时,他们将学习解决问题,设计项目和交流思想的重要策略. 1.安装 ...

  8. Avalonia项目生成银河麒麟操作系统安装包

    1 在项目根目录添加xxx.desktop文件,文件内容: [Desktop Entry] Name=xxx Type=Application Exec=/usr/share/xxx/xxx Icon ...

  9. debian12 linux 安装xfce4

    1.安装显示服务器 sudo apt install xorg 2.安装xfce sudo apt install xfce4 xfce4-goodies 3.安装显示管理器 sudo apt ins ...

  10. Python 潮流周刊第 44 期(摘要)+ 赠书 5 本《明解Python算法与数据结构》

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...