【问题标题】:SQL Server 2012 : create a new table with instant 1000 record that contains three @variable in int and varcharSQL Server 2012:创建一个包含即时 1000 条记录的新表,其中包含 int 和 varchar 中的三个 @variable
【发布时间】:2016-05-17 23:11:21
【问题描述】:

我想创建一个包含多个变量的新表:@id as int@lastname as varchar@amount as money。这三个变量应该按顺序变化

预期结果示例:

#id      #lastname    #amount
-------------------------------
1        Ben1         100
2        Ben2         101 
3        Ben3         103
.        Ben4         104
.        .            .
1000     Ben1000      .1000

感谢大家的意见

【问题讨论】:

  • a table 包含 variables :这没有意义。或者你的意思是columns?使用CREATE TABLE 语句创建变量。如果您不确定如何,请参阅在线书籍或搜索它

标签: sql-server


【解决方案1】:

您的问题类似于“如何创建计数表”问题。示例解决方案如下:

WITH Tally (n) AS (
     -- 1000 rows
     SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL))
     FROM (VALUES(0),(0),(0),(0),(0),(0),(0),(0),(0),(0)) a(n)
        CROSS JOIN (VALUES(0),(0),(0),(0),(0),(0),(0),(0),(0),(0)) b(n)
        CROSS JOIN (VALUES(0),(0),(0),(0),(0),(0),(0),(0),(0),(0)) c(n)
   )
-- INSERT INTO [TableOfYourChoice]
SELECT n, 'Ben' + CONVERT( VARCHAR, n ), n + 100
FROM Tally;

注意:如果要从100开始,则将n + 100改为n + 99

示例改编自http://www.sqlservercentral.com/blogs/dwainsql/2014/03/27/tally-tables-in-t-sql/的示例

【讨论】:

    【解决方案2】:
    ;with t as (
    select 1 id, 'Ben'+cast(1 as varchar) name, 100 amount
    union all
    select id+1,'Ben'+cast(id+1 as varchar),amount+1
    from t
    where id<1000
    )
    --insert dbo.myTable
    select * from t
    option (maxrecursion 1000)
    

    【讨论】:

    • 效果很好。非常感谢您的宝贵时间
    猜你喜欢
    • 2012-06-17
    • 2017-11-13
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多