2015-09-14 27 views
0

我有两个表。 如何订购此表例如:带分组的mssql订单表

A B 
A D 
A C 
A A 
B C 
B B 
B D 
C D 
C B 
C D 

此表(双排序结果):

A A 
A B 
A C 
A D 
B B 
B C 
B D 
C C 
C B 
C D 
+0

逻辑本身是不明确的,你应该提供你尝试过什么到目前为止的代码,原因,因为它是这是不可能帮助你。 –

+0

'SELECT a。*,b。* from tablea a left join tableb b on(a.field = b.field)ORDER by a.field,b.field' - 试试这个,未经测试 – Corbin

回答

2

我想这一点,可能是有用的:

DECLARE @table1 TABLE(col1 VARCHAR(1), col2 VARCHAR(2)) 

INSERT INTO @table1 VALUES 
('A', 'B'), 
('A', 'D'), 
('A', 'C'), 
('A', 'A'), 
('B', 'C'), 
('B', 'B'), 
('B', 'D'), 
('C', 'D'), 
('C', 'B'), 
('C', 'C') 

SELECT * FROM @table1 
ORDER BY col1, CASE WHEN col1 = col2 THEN '!' ELSE col2 END 

注:我假设您的第二栏数据中没有感叹号。

+0

'CASE WHEN col1 = col2然后 '!' ELSE col2 END'将一个a,b b,c c,然后另一个 – Malenkymuk

+0

@Malenkymuk我在我的ssms中运行了这个查询,它给出了所需的内容。也检查这个小提琴:http://sqlfiddle.com/#!6/9eecb7db59d16c80417c72d1/3241。如果这不符合你的期望,那么我会建议在你的问题中添加你的排序逻辑。 –

+0

对不起,没有看到'col1,'。谢谢。 – Malenkymuk

0

为什么不这样:

SELECT * FROM TableA 
GROUP BY ColA, ColB 
ORDER BY ColA, ColB