【发布时间】:2013-12-16 02:24:05
【问题描述】:
给定:demo here
OneTable
Id,GroupId,TopId,TopSort
-------------------------
1,1,101,2
2,1,101,2
3,1,102,1
4,1,102,1
5,1,103,null
6,1,103,null
7,1,104,null
8,1,104,null
完成 TopSort 列中空值的现有序列的最佳方法是什么?并且如果所有的 TopSort 值都为 null,则根据 Id 列升序开始序列。
例如,
上面应该如下所示:
OneTable
Id,GroupId,TopId,TopSort
-------------------------
1,1,101,2
2,1,101,2
3,1,102,1
4,1,102,1
5,1,103,3
6,1,103,3
7,1,104,4
8,1,104,4
奖金: 如果所有 TopSort 值一开始都是空的,相同的 SQL 是否可以工作?
只是寻找提示,而不仅仅是寻找答案。
【问题讨论】:
-
请解释一下“re-sequence”在您的情况下是什么意思。
-
让我换个说法,说完成序列,如果所有基于 Id 的空序列。我换个话题。
-
什么序列,你想怎么完成?
-
从你的例子看来,你只是想要
ORDER BY TopID, ID如果这不正确,请提供另一个例子 -
我建议逐步解释您的表格转换。
标签: sql tsql sql-server-2012