Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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_Split - Fatal编程技术网

如何在SQL Server中将一列拆分为多行上的多列?

如何在SQL Server中将一列拆分为多行上的多列?,sql,sql-server,split,Sql,Sql Server,Split,我需要在SQL Server中创建一个接受以下两个参数的存储过程: 返回1列的select语句。 许多列。 然后,存储过程将运行select语句并返回select语句的结果,其中单列的值被拆分为每行给定数量的列 以下是一些例子: exec stored_proc ‘select id from table where id between 1 and 20’, 5 选择的结果将是: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1

我需要在SQL Server中创建一个接受以下两个参数的存储过程:

返回1列的select语句。 许多列。 然后,存储过程将运行select语句并返回select语句的结果,其中单列的值被拆分为每行给定数量的列

以下是一些例子:

exec stored_proc ‘select id from table where id between 1 and 20’, 5
选择的结果将是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 1            2            3            4            5
 6            7            8            9           10
11           12           13           14           15
16           17           18           19           20
存储过程调用的结果将是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 1            2            3            4            5
 6            7            8            9           10
11           12           13           14           15
16           17           18           19           20
或者,电话可能是:

exec stored_proc ‘select id from table where id between 1 and 20’, 10
给出以下结果:

1              2              3              4              5              6              7              8              9              10
11           12           13           14           15           16           17           18           19           20

虽然我不确定您是否应该在SQL中执行此操作,但它是可以完成的。 我认为这样做的方法是创建一个游标,并使用它的迭代来构建一个动态SQL语句


在每次迭代中,将每个数据段添加为一个新的列字段,当达到列数时,添加类似Union Select的内容

我认为您使用sql是错误的。这可能不应该使用sql来完成,但是处理它的结果的语言。方钉,圆孔。更不用说他们还没有提供任何他们试图编写的代码来解决他们的问题。是的,我想到了这个想法,但我还没有时间研究解决方案,所以我想我会抛出这个问题来回答。这段代码的应用程序将是一个报告,为返回的每一行生成一行详细信息。报告可以将每个结果字段转换为任何联系人信息,但不能改变每行的字段数或生成的详细信息行数。这就是为什么我希望在存储过程中执行此操作。感谢您迄今为止的回复。您对该查询有任何控制权或高级知识吗?例如,您可以说您的查询将始终以nvarcharmax的形式返回列,还是始终以MyVal的形式返回列?您的查询是否包含ORDERBY子句?