根据单个数据库查询中的条件增加值

Kyl*_*ard 3 sql sql-server-2005

我有一个表格,其中有一个标有'sortorder'的列,用于允许客户手动更改每个项目的顺序.该表还有一个标记为"CategoryId"的列.

我很好奇,如果我批量导入一组数据,其中我知道所有数据,包括CategoryId,我如何在查询中指定'SortOrder'的实施值,以便它在每个独特的CategoryId中从1变为X .

感谢大家.

Rem*_*anu 9

我不确定我理解你的问题,但我认为你所问的是如何在插入表格期间合成一个合适的SortOrder.您应该使用ROW_NUMBER()和CategoryId进行分区.当然,您需要定义一个排序标准,该标准给出"1到X"的属性顺序:

INSERT INTO myTable (SortOrder, CategoryId, <other columns> ...)
SELECT ROW_NUMBER() OVER (PARTITION BY CategoryId ORDER BY mySortCriteria)
  , CategoryId
  , <other columns> ...
  FROM SourceTable;
Run Code Online (Sandbox Code Playgroud)