一道SQL面试题
表结构如下
是一张递归格式的表

使用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面试题的更多相关文章
- 一道sql面试题(查询语句)
一道sql面试题(查询语句) id name age 1 a 11 2 b 11 3 c 12 4 d 13 5 e ...
- 汽车之家一道SQL 面试题,大家闲来无事都来敲一敲
写在前面 上周去汽车之家面试,拿到这个SQL笔试题顿时感觉到有些陌生,因为好长时间不写SQL语句了,当时只写了表设计,示例数据和SQL语句都没写出来. 汽车之家应该用的SQL Server, 编程题一 ...
- 一道SQL面试题——表行列数据转换(表转置)
SQL语句如下: select country, sum(case when type='A' then money end) as A, sum(case when type='B' then mo ...
- 一道SQL的面试题之联想
一道SQL的面试题之联想 本人工作在一家小型的民营企业,主要从事业务系统的日常维护,二次开发,菜鸟一枚.周五经理准备面试两个开发人员,据简历,都还比较不错,让经理产生了想法,于是准备了一套面试题目,给 ...
- sql经典试题
1.一道SQL语句面试题,关于group by表内容:2005-05-09 胜2005-05-09 胜2005-05-09 负2005-05-09 负2005-05-10 胜2005-05-10 负2 ...
- 必会SQL笔试题
()表名:购物信息 购物人 商品名称 数量 A 甲 B 乙 C 丙 A 丁 B 丙 …… 给出所有购入商品为两种或两种以上的购物人记录 答:); ()表名:成绩表 姓名 课程 分数 张三 语文 张三 ...
- sql面试题一 学生成绩
sql面试题一 学生成绩 原帖链接:http://topic.csdn.net/u/20081020/15/1ABF54D0-F401-42AB-A75E-DF90027CEBA0.html 表架 ...
- 经典的SQL面试题
SQL中 inner join. left join .right join. outer join之间的区别 A表(a1,b1,c1) B表(a2,b2) a1 b1 c1 a2 b2 01 数学 ...
- 一道 JavaScript 面试题
有一道 JavaScript 面试题. f = function () { return true; }; g = function () { return false; }; (function() ...
- SQL面试题1
SQL面试题 Sql常用语法 下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言 ...
随机推荐
- 2023山东省“技能兴鲁”职业技能大赛-学生组初赛wp
PWN pwn1 c++ pwn,cin 直接相当于 gets 了,程序有后门,保护基本没开,在 change 的最后一个输入点改掉返回地址为后门地址即可 from pwn import * cont ...
- zhelper-cvtool
https://github.com/bbqz007/zhelper-cvtool cvtool images/SuperMario.mp4 anno,cascade cvtool images/Su ...
- 1、Azure Devops之什么是Azure DevOps
什么是Azure DevOps 1.师出名门:是微软推出的一个集项目管理.开发管理.测试管理的一个服务套件. 2.历史:前身是微软在2005年推出的Team foundation Server一个专门 ...
- 使用nodejs从控制台读入内容
在写算法题的时候,基本上都需要输入输出语句,在大多数练题网站上当想用js书写算法题时,发现不知道怎么输入,其实Node是提供了一个readline模块来实现此功能的 tip 笔者用过的练题网站只有le ...
- python基础五(文件操作)
一 文件操作 一 介绍 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众 ...
- FTP的配置和管理
实验环境: 两台windows servers 一台已经配置了FTP服务器,IP为192.168.1.220,vmnet1 一台作为客户端测试,IP为192.168.1.138,vmnet1 一:FT ...
- 记录--求你了,别再说不会JSONP了
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 JSONP是一种很远古用来解决跨域问题的技术,当然现在实际工作当中很少用到该技术了,但是很多同学在找工作面试过程中还是经常被问到,本文将带 ...
- go两种遍历chan
go中对通道chan遍历有两种方式一种是用range另一种为for select. package main import ( "fmt" "strings" ...
- python pyzbar 批量识别二维码
1.安装pyzbar pip install pyzbar 2.代码 import os import cv2 as cv from pyzbar import pyzbar # 目录路径 path ...
- linux安装/切换不同版本c/c++
查看ubuntu系统上g++的版本: ls /usr/bin/g++* 安装指定版本gcc和g++ # 以version == 4.9为例 sudo apt-get install gcc-4.9 g ...