Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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中以编程方式创建500列?_Sql_Sql Server - Fatal编程技术网

如何在SQL Server中以编程方式创建500列?

如何在SQL Server中以编程方式创建500列?,sql,sql-server,Sql,Sql Server,我必须创建一个由500列组成的表。我已经找过了,但找不到真正对我有用的东西。有没有办法用SQL查询创建500列的表?例如,我的专栏如下: ID、名称、A1、A2、A3、A4、A5、A6……、A598 提前谢谢。看来这是为了好玩,而不是为了有用 DECLARE @sql nvarchar(max), @NumberOfColumns int = 500 SELECT @sql = 'CREATE TABLE ABC(ID nvarchar(10) primary key,Name nvarcha

我必须创建一个由500列组成的表。我已经找过了,但找不到真正对我有用的东西。有没有办法用SQL查询创建500列的表?例如,我的专栏如下:

ID、名称、A1、A2、A3、A4、A5、A6……、A598


提前谢谢。

看来这是为了好玩,而不是为了有用

DECLARE @sql nvarchar(max), @NumberOfColumns int = 500

SELECT @sql = 'CREATE TABLE ABC(ID nvarchar(10) primary key,Name nvarchar(20)'

;WITH source AS
(
    SELECT * FROM (values (0), (0), (0), (0), (0), (0), (0), (0), (0), (0)) AS NumbersTable(Number)
),
source2 AS (SELECT s1.Number FROM source s1, source s2),
source3 AS (SELECT s1.Number FROM source2 s1, source2 s2)
SELECT TOP(@NumberOfColumns) @sql = @sql + ',A' + CONVERT(nvarchar(10), Number) + ' nvarchar(10)' FROM (SELECT ROW_NUMBER() OVER (ORDER BY Number) AS Number FROM source3) data

SELECT @sql = @sql + ')'

print (@sql)

BEGIN TRAN
EXEC (@sql)
SELECT * FROM ABC
ROLLBACK TRAN

那张桌子的设计真是糟透了。不管怎样,代码在这里。它使用动态sql:

DECLARE @sql nvarchar(max)

SET @sql = N'CREATE TABLE TheMostStupidTableIHaveEverSeen(ID int, Name varchar(100)'
DECLARE @i int = 1
WHILE @i <= 598
BEGIN
    SET @sql = @sql + N', A' + CAST(@i AS nvarchar(4)) + N' int'
    SET @i = @i + 1
END
SET @sql = @sql + N')'
EXEC (@sql)

为什么要创建一个包含500列的表?就像CREATETABLE语句一样?为什么认为需要600列?你想解决的真正问题是什么?毫无疑问,有更好的方法来解决你真正的问题。@万能的真正的问题是什么?表仅以编程方式创建-即使SSM也使用SQL语句创建表。只需编写一个包含600列的语句。问题是为什么?@Omnipolent我建议您删除此问题并创建一个新的问题,说明您真正想要的内容-基于另一个表创建一个create TABLE语句。指定源数据库。如果是SQL Server,请指定无法使用脚本表的原因。这个表格已经收到了太多的反对票,即使你修改了文本,你也不会得到任何答案