【DB2】国标行业分类存储,通过SQL查询出层级关系

新建表

DROP TABLE Industry;
CREATE TABLE Industry(
IndustryCode VARCHAR(40),IndustryName VARCHAR(100),ParentID VARCHAR(40)
)

点击下载插入语句

数据截图:

现在数据是这个样子的,我们需要找出对应的层级关系,例如:

实现SQL如下:

SELECT
A.IndustryCode AS CLASS01,A.INDUSTRYNAME CLASS_01NM,
B.IndustryCode AS CLASS02,B.INDUSTRYNAME CLASS_02NM,
C.IndustryCode AS CLASS03,C.INDUSTRYNAME CLASS_03NM,
C.IndustryCode AS CLASS04,C.INDUSTRYNAME CLASS_04NM,
DENSE_RANK() over(ORDER BY A.INDUSTRYCODE) SEQ
FROM Industry A,Industry B,Industry C,Industry D
WHERE A.INDUSTRYCODE=B.PARENTID AND B.INDUSTRYCODE=C.PARENTID AND C.INDUSTRYCODE=D.PARENTID

原文地址:https://www.cnblogs.com/OliverQin/p/8662789.html

时间: 2024-10-24 11:35:05

【DB2】国标行业分类存储,通过SQL查询出层级关系的相关文章

如何将sql查询出的列名用注释代替?

如何将sql查询出的列名用注释代替? 大家正常的工作的时候,会有这样的要求,客户想要看下原始数据,但是呢.前台导出又麻烦,这时候只能从数据库拷贝出来一份.但是呢,数据库里面的字段客户又看不明白,只能用数据库里面的注释.但是这时候,如果要求很多张表,难道我们要一个个复制吗?这也太tm蠢了. 1 查看我们表 select * from user_col_comments where table_name='TNAME'; 2 写上函数 create or replace function f_col

SQL查询出当前服务器时间是否在表T1时间段内,如果有则选择出

表T1 开始 时间         结束时间          09:00:00          12:00:00      14:00:00          17:00:00 查询出当前服务器时间是否在表T1时间段内,如果有则选择出 选出的sql结果集如下,求SQL,  注:SQL2000环境 开始 时间         结束时间           14:00:00          17:00:00 方法一: DECLARE @t TABLE (     beginTime CHAR(

SQL查询出每门课都大于80 分的学生姓名

Course表如下: 查询出每门课都大于80 分的学生姓名有两种方法. 1.select  distinct name from Course where name not in (select distinct name from Course where score<=80) 2.select  name    from Course group by name having min(score)>80

【转】一个SQL查询出每门课程的成绩都大于80的学生姓名

name   kecheng    fenshu 张三     语文     81张三     数学     75李四     语文     76李四     数学     90王五     语文     81王五     数学     100王五     英语     90 方法一: 思路:如果能获得一张表,由学生姓名,语文成绩,数学成绩,英语成绩的表,剩下的就是在WHERE条件中筛选及可以获得想要的结果. 具体办法:通过自连接的办法,以“姓名”为连接条件,自连接三次,便可以获得包含又姓名和三

如何将sql查询出的结果,用符号隔开

晚饭过后,打开QQ圈子,发现QQ群里有人提问了一个问题↓ 数据表中有这样的数据 1 100 1 101 1 106 2 100 2 109 3 112 如何转换为 1 100,101,106 2 100,109 3 112 知道写存储过程或者函数可以解决,但是想想能不能用一条sql语句解决...未果... 还是去搜索了下怎么搞,→转载链接← create table tb(id int, value varchar(10)) insert into tb values(1, 'aa') inse

权限管理(RBAC模型) 一条SQL查询出菜单

//用户表 SELECT m.* FROM sys_user su //用户角色表,以用户id为条件 JOIN sys_user_role ur on su.id=ur.user_id //角色表,以角色id为条件 JOIN sys_role r on ur.role_id=r.id //角色菜单表,以角色id为条件 JOIN sys_role_menu rm on rm.role_id=r.id //菜单表,以菜单id为条件 再通过用户名进行查询 JOIN sys_menu m on m.id

SQL查询无限层级结构的所有下级,所有上级

无限层级结构的table1表,Id(主键),ParentId(父级id)查询某个Id的所有下级或所有上级,使用WITH AS,UNION ALL 查询 1.查询Id为1所有的下级 WITH T AS( SELECT * FROM table1 WHERE Id=1 UNION ALL SELECT a.* FROM table1 a INNER JOIN T ON a.ParentId=T.Id ) SELECT * FROM T 2.查询Id为88所有的上级 WITH T AS( SELECT

如何用sql查询出连续三个月金额大于50的记录

with tmp as(select 'A' AS USERNAME,to_date('2017.10','yyyy.mm') month,45 num from dual union allselect 'A' AS USERNAME,to_date('2017.11','yyyy.mm') month,53 from dual union allselect 'A' AS USERNAME,to_date('2017.12','yyyy.mm') month,59 from dual uni

DB2 SQL查询结果集自动编号、返回条数范围控制研究

DB2 SQL查询结果集自动编号.返回条数范围控制研究 摘要: DB2 SQL语句实现查询的记录自动编号.并根据编号进一步实现记录范围控制.分页查询. 环境: IBM DB2 Universal V9.1 Windows XP Professional 要求:写一个SQL语句,在查询结果中要显示出记录序号,这个序号是是根据记录顺序自动生成的. 测试初始化DB2 SQL脚本: drop table t_test; create table t_test (bs        bigint