Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server中按列组排序_Sql_Sql Server_Sql Server 2005_Sorting_Sql Order By - Fatal编程技术网

SQL Server中按列组排序

SQL Server中按列组排序,sql,sql-server,sql-server-2005,sorting,sql-order-by,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多条记录来说,这需要很多时间。试试这个: SELECT t1.

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

模式为-Source、ID1、ID2、Name1、Name2

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

试试这个:

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;
试试这个:

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;

如果您可以发布当前基于光标的方法,这将非常有用。如果您可以发布当前基于光标的方法,这将非常有用。