Sqlserver分组合并数据和多级查询

分组后按字段拼接

【例如】:
部门表:id,name,parent_id
选择某一部门时,该部门下所有子部门分组,将名字拼接。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

SELECT
parent_id,
NAME = stuff ((
SELECT
',' + NAME
FROM
organization t
WHERE
t.parent_id = a.parent_id FOR XML path ( '' )),
1,
1,
''
)
FROM
organization a
GROUP BY
parent_id

多级树形查询

Sql Server:
使用Common Table Expression (CTE)
【例如】:
部门表:id,name,parent_id
选择某一部门时,该部门下所有子部门、子子部门全部遍历出来。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
WITH cte_child ( id, NAME, parent_id ) AS (
SELECT
id,
NAME,
parent_id
FROM
organization
WHERE
id = 50 UNION ALL
SELECT
a.id,
a.NAME,
a.parent_id
FROM
organization a
INNER JOIN cte_child b ON ( a.parent_id = b.id )) SELECT
*
FROM
cte_child

一辈子很短,努力的做好两件事就好:
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱。

继开 wechat
欢迎加我的微信,共同交流技术