按SQL Server中的列组排序

时间:2012-10-01 22:22:11

标签: sql sql-server sql-server-2005 sorting sql-order-by

我的问题是从2个结果中对数据进行排序。两个结果集中的计数相同(现在,我将两个结果集合在一起,按源 - a或b过滤)。我必须显示数据,例如 - 对于每个ID1和& ID2组合,在源顺序中显示它们;源'a' - 首先,然后源'b')。源b可以具有ID1和&的所有空值。 ID2组合;但肯定有记录。

架构是 - Source,ID1,ID2,Name1,Name2。

我写了一个小游标来处理这个问题,并用一个标志设置序列顺序。这适用于少量数据。但对于1000多条记录,它需要花费大量时间。

1 个答案:

答案 0 :(得分:0)

试试这个:

SELECT
  t1.Source,
  t1.Id1,
  t1.ID2,
  t1.Name1,
  t1.Name2,
  ROW_NUMBER() OVER(PARTITION BY ID1, ID2 
                    ORDER BY SortOrder.sortId) rownum
FROM Table1 t1
INNER JOIN
(
   SELECT 1 AS sortId, 'a' Source
   UNION ALL
   SELECT 2, 'b'
) SortOrder ON t1.Source = SortOrder.Source
ORDER BY rownum, SortOrder.sortId;

SQL Fiddle Demo