2014-01-12 67 views
0

我正在使用SQL Server 2008R2。我有一个返回下面的数据集查询:按两列排序SQL Server查询

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名姓关系
1萨姆·阿里员工
1玛雅阿里依赖
1休Ibram Dependent
2 Nadia Amle员工
2 Alie Salem Dependent
4 Joe Davis员工
3 Saher Jacobs员工

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

非常感谢您的帮助。

+0

强烈建议每个表都有一个主键。你显然没有这里 – zerkms

回答

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是万一有两名员工具有相同的姓氏。这可以确保该组中的所有人员都保持在一起。

+0

请看编辑的问题 – user3186783

+0

我不确定我现在明白了。你想按组中最低姓命令每个组? – Barmar

+0

对不起,现在我希望这个问题更清楚 – user3186783

1

您可以使用巴尔梅尔这样回答

SELECT * FROM TABLE ORDER BY ID, LastName 
+0

以上不起作用,请看编辑问题 – user3186783

1

你想这样的:

ORDER BY ID, LastName 

您可以订购多个列,并且您指定的顺序是优先级每个人都有。所以在这种情况下,它读起来就像“通过ID秩序,然后再在下一个姓氏”

UPDATE

ORDER BY ID, LastName, FirstName

这应该给你什么你之后。

+0

请看编辑问题 – user3186783

+0

@ user3186783新订购没有意义,它不是按ID排序,ID 3出现在以下ID 4 – Durandal

+0

对不起,为了更加清晰,我再次编辑了问题 – user3186783