2

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

架构是 - 源、ID1、ID2、Name1、Name2。

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

4

1 回答 1

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 小提琴演示

于 2012-12-17T12:18:20.790 回答