在SQL中生成2个列值之间的序列

m3eecexj  于 2022-10-22  发布在  其他
关注(0)|答案(1)|浏览(175)

我有一个结构如下的表格:
|FromAccount|ToAccount|团队|位置|
| ------------ | ------------ | ------------ | ------------ |
|100|150|a|5|
|151|300|b|4|
|301|322|c|4|
我想在表上运行一个SQL查询,该查询将返回FromAccount到ThruAccount的+1系列,其中包含属于该系列的Team和Location列。我认为这个表应该是这样的,其中为From Thru Span中的每个+1值返回一条记录。
|帐户|团队|位置|
| ------------ | ------------ | ------------ |
|100|a|5|
|101|a|5|
|102 |a |5|
| ... | ... | ... |
| ... | ... | ... |
|149|a|5|
|150|a|5|
|151|b|4|
|152|b|4|
| ... | ... | ... |
|300|c|4|
| ... | ... | ... |
|321|c|4|
|322|c|4|
这可以在SQL Server中完成吗?

xuo3flqw

xuo3flqw1#

假设101只是由于输入错误而丢失,我们可以使用递归CTE来生成从最低到最高的所有数字,然后将它们连接起来。

DECLARE @min int, @max int;

SELECT @min = MIN(FromAccount), @max = MAX(ToAccount)
  FROM dbo.TableName;

WITH n(n) AS (SELECT @min UNION ALL
  SELECT n+1 FROM n WHERE n < @max
)
SELECT Account = n.n,
  t.Team, t.Location
FROM dbo.TableName AS t
INNER JOIN n
ON n.n BETWEEN t.FromAccount AND t.ToAccount
OPTION (MAXRECURSION 0);

相关问题