SQL嵌套选择分组依据
我在SQL Server中名为“测试”的表中有一些数据:SQL嵌套选择分组依据,sql,sql-server,Sql,Sql Server,我在SQL Server中名为“测试”的表中有一些数据: ID Name Department 1 Person1 IT 2 Person2 Finance 3 Person3 IT 4 Person4 IT 5 Person5 Finance 我使用的SQL查询是: SELECT Department AS '@Department', ( SELECT Name FROM testing WHERE Department = Depart
ID Name Department
1 Person1 IT
2 Person2 Finance
3 Person3 IT
4 Person4 IT
5 Person5 Finance
我使用的SQL查询是:
SELECT Department AS '@Department',
(
SELECT Name
FROM testing
WHERE Department = Department
FOR XML PATH ('Person'), TYPE
)
FROM testing
GROUP BY Department
FOR XML PATH ('Department'), TYPE
现在的问题是输出没有按部门分组。取而代之的是,所有的人都包括在金融中,然后又包括在金融中
我错在哪里
提前谢谢
电流输出为:
<Department Department="Finance">
<Person>
<Name>Person1</Name>
</Person>
<Person>
<Name>Person2</Name>
</Person>
<Person>
<Name>Person3</Name>
</Person>
<Person>
<Name>Person4</Name>
</Person>
<Person>
<Name>Person5</Name>
</Person>
</Department>
<Department Department="IT">
<Person>
<Name>Person1</Name>
</Person>
<Person>
<Name>Person2</Name>
</Person>
<Person>
<Name>Person3</Name>
</Person>
<Person>
<Name>Person4</Name>
</Person>
<Person>
<Name>Person5</Name>
</Person>
</Department>
<Department Department="Finance">
<Person>
<Name>Person2</Name>
</Person>
<Person>
<Name>Person5</Name>
</Person>
</Department>
<Department Department="IT">
<Person>
<Name>Person1</Name>
</Person>
<Person>
<Name>Person3</Name>
</Person>
<Person>
<Name>Person4</Name>
</Person>
</Department>
人1
人2
人3
人4
人5
人1
人2
人3
人4
人5
但我期望的结果是:
<Department Department="Finance">
<Person>
<Name>Person1</Name>
</Person>
<Person>
<Name>Person2</Name>
</Person>
<Person>
<Name>Person3</Name>
</Person>
<Person>
<Name>Person4</Name>
</Person>
<Person>
<Name>Person5</Name>
</Person>
</Department>
<Department Department="IT">
<Person>
<Name>Person1</Name>
</Person>
<Person>
<Name>Person2</Name>
</Person>
<Person>
<Name>Person3</Name>
</Person>
<Person>
<Name>Person4</Name>
</Person>
<Person>
<Name>Person5</Name>
</Person>
</Department>
<Department Department="Finance">
<Person>
<Name>Person2</Name>
</Person>
<Person>
<Name>Person5</Name>
</Person>
</Department>
<Department Department="IT">
<Person>
<Name>Person1</Name>
</Person>
<Person>
<Name>Person3</Name>
</Person>
<Person>
<Name>Person4</Name>
</Person>
</Department>
人2
人5
人1
人3
人4
您需要使用别名,因为您有两个对测试表的引用:
SELECT Department AS '@Department',
(
SELECT Name
FROM testing t2
WHERE t2.Department = t.Department
FOR XML PATH ('Person'), TYPE
)
FROM testing t
GROUP BY Department
FOR XML PATH ('Department'), TYPE
您的查询有Department=Department
。它们都是指内部的测试
,因此它们只选择部门的非空值