SQL:记一个查询问题

问题

有部门表和部门管理员表,部门表比较常规,反常的是部门管理员表。这张表是ETL整理出来的表,包含各部门的主管、秘书、机要员信息等等。

下面把关键字段列出来:
部门表,department:

dept_codedept_name
50040001部门1
50040002部门2
50040003部门3

部门管理员表,manager:

dept_codeemp_codetype_idseq_id
500400020332811
500400020666712
500400021105321
500400031507511

type_id表示这个人的角色,type_id=1则为部门主管,type_id=2则为部门秘书,还有其它的可能不列举了。

seq_id表示顺序,因为有的部门会有多个主管和多个秘书,需要给他们一个顺序。同时,有的部门什么都没有,如部门1,在manager表里根本没有记录。

我们的目标是,关联出每个部门的主管信息,没有的话(确实有没有主管的部门)为空,多个的话取第1个。输出类似下面的结构:

dept_codedept_nameemp_code
50040001部门1null
50040002部门201381
50040003部门315075

我能写的SQL如下,简直是裹脚布啊,不知道怎么优化:

SELECT
	d.dept_code,
	d.dept_name,
	m.emp_code
FROM
	department as d
LEFT JOIN (
	SELECT
		type_id,
		dept_code,
		emp_code
	FROM
		hrs.manager
	WHERE
		type_id = 1
		AND seq_id = 1) AS m ON
	d.dept_code = m.dept_code
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值