我的问题是从2个结果中对数据进行排序。两个结果集中的计数相同(现在,我将两个结果集合在一起,按源 - a或b过滤)。我必须显示数据,例如 - 对于每个ID1和& ID2组合,在源顺序中显示它们;源'a' - 首先,然后源'b')。源b可以具有ID1和&的所有空值。 ID2组合;但肯定有记录。
架构是 - Source,ID1,ID2,Name1,Name2。
我写了一个小游标来处理这个问题,并用一个标志设置序列顺序。这适用于少量数据。但对于1000多条记录,它需要花费大量时间。
答案 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;