Sql server 分组方式,用于将数据分组为字符串格式
我有一个表,其中包含下面给出的一些数据。它使用树状结构 i、 eSql server 分组方式,用于将数据分组为字符串格式,sql-server,tsql,group-by,sql,Sql Server,Tsql,Group By,Sql,我有一个表,其中包含下面给出的一些数据。它使用树状结构 i、 e 我想代表部门对我的记录进行分组,然后是直属家长,然后是首选项,每个首选项之间用“,”分隔 i、 e 在实际场景中,所有这些都是我的ID,将由它们的字符串字段替换 我使用的是SQL server 2k5,您可以在子查询中使用FOR XML PATH来获取逗号分隔的值列表。然后按键字段分组,以获得正确的值 第一个问题 SELECT [Department_Id], STUFF( ( SELE
我想代表部门对我的记录进行分组,然后是直属家长,然后是首选项,每个首选项之间用“,”分隔 i、 e
在实际场景中,所有这些都是我的ID,将由它们的字符串字段替换
我使用的是SQL server 2k5,您可以在子查询中使用FOR XML PATH来获取逗号分隔的值列表。然后按键字段分组,以获得正确的值 第一个问题
SELECT
[Department_Id],
STUFF(
(
SELECT
',' + CONVERT(varchar(10), [ImediateParent])
FROM
[YourTable] [YourTable2]
WHERE
[YourTable2].[Department_Id] = [YourTable].[Department_Id]
FOR XML PATH('')
), 1, 1, ''),
STUFF(
(
SELECT
',' + CONVERT(varchar(10), [Preferences])
FROM
[YourTable] [YourTable2]
WHERE
[YourTable2].[Department_Id] = [YourTable].[Department_Id]
FOR XML PATH('')
), 1, 1, '')
FROM
[YourTable]
GROUP BY
[YourTable].[Department_Id]
至于你的第二个问题
SELECT
[ImediateParent],
STUFF(
(
SELECT
',' + CONVERT(varchar(10), [Preferences])
FROM
[YourTable] [YourTable2]
WHERE
[YourTable2].[ImediateParent] = [YourTable].[ImediateParent]
FOR XML PATH('')
), 1, 1, '')
FROM
[YourTable]
GROUP BY
[YourTable].[ImediateParent]
department Immediate Parent preferences
1 5,6 14,15,16
2 4,3,20,13 9,4,24,25,23
and this table also
Immediate parent preferences
5 14,15
6 16
4 9
3 4
20 24,25
13 13
SELECT
[Department_Id],
STUFF(
(
SELECT
',' + CONVERT(varchar(10), [ImediateParent])
FROM
[YourTable] [YourTable2]
WHERE
[YourTable2].[Department_Id] = [YourTable].[Department_Id]
FOR XML PATH('')
), 1, 1, ''),
STUFF(
(
SELECT
',' + CONVERT(varchar(10), [Preferences])
FROM
[YourTable] [YourTable2]
WHERE
[YourTable2].[Department_Id] = [YourTable].[Department_Id]
FOR XML PATH('')
), 1, 1, '')
FROM
[YourTable]
GROUP BY
[YourTable].[Department_Id]
SELECT
[ImediateParent],
STUFF(
(
SELECT
',' + CONVERT(varchar(10), [Preferences])
FROM
[YourTable] [YourTable2]
WHERE
[YourTable2].[ImediateParent] = [YourTable].[ImediateParent]
FOR XML PATH('')
), 1, 1, '')
FROM
[YourTable]
GROUP BY
[YourTable].[ImediateParent]