我正在使用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。
非常感谢您的帮助。
答案 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
这可以让你得到你想要的东西。