按两列排序SQL Server查询

时间:2014-01-12 08:03:00

标签: sql sql-server-2008-r2

我正在使用SQL Server 2008R2。我有一个返回以下数据集的查询:

ID FirstName LastName  Relation

1  Sam       Ali   Employee
1  Maya      Ali   Dependent
2  Nadia     Amle  Employee
1  Sue       Ibram  Dependent
3  Saher     Jacobs  Employee
2  Alie      Salem   Dependent

我希望查询结果如下:

ID FirstName LastName关系
1 Sam Ali员工
1 Maya Ali Dependent
1 Sue Ibram Dependent
2 Nadia Amle员工
2 Alie Salem Dependent
4 Joe Davis员工
3 Saher Jacobs员工

现在要求: 1.按ID分组,以便具有相同ID的员工和家属彼此相邻。 2.按A-Z命令列LastName。

非常感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

使用自我加入,这样您就可以获得与每个受抚养人相关联的员工,并按此顺序。

SELECT t1.ID, t1.FirstName, t1.LastName, t1.Relation, t2.LastName AS EmployeeName
FROM YourTable AS t1
JOIN YourTable AS t2 ON t1.ID = t2.ID
WHERE t2.Relation = "Employee"
ORDER BY EmployeeName, t1.ID, t1.LastName

在订购中包含t1.ID,以防有两名员工姓氏相同。这可以确保该组中的所有人在结果中保持一致。

答案 1 :(得分:1)

你可以像这样使用barmer答案

SELECT * FROM TABLE ORDER BY ID, LastName

答案 2 :(得分:1)

你想要这个:

ORDER BY ID, LastName

您可以订购多个列,您指定它们的顺序是每个列的优先级。所以在这种情况下,它读起来像“先按ID排序,然后是下一个LastName”

更新

ORDER BY ID, LastName, FirstName

这可以让你得到你想要的东西。