2

私の問題は、2 つの結果からデータを並べ替えることです。カウントは両方の結果セットで同じです (現在、両方の結果セットを 1 つにまとめ、ソース (a または b) でフィルター処理しています)。次のようなデータを表示する必要があります-ID1とID2の組み合わせごとに、ソース順に表示します。ソース 'a' - 最初にソース 'b')。ソース b は、ID1 と ID2 の組み合わせに対してすべて null 値を持つ場合があります。しかし、確かに記録があります。

スキーマは、Source、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 に答える