2011-09-20 2 views
1

x attributesn rows like으로 테이블을 만들려면 어떻게해야합니까? 예를 들어SQL Server 2008에서 테스트 테이블 만들기

:

x = 4 , and n = 10 


att1 att2 att3 att4 
---------------------- 
1  2  3  4 
1  2  3  4 
1  2  3  4 
1  2  3  4 
1  2  3  4 
1  2  3  4 
1  2  3  4 
1  2  3  4 
1  2  3  4 
1  2  3  4 
+0

SSMS 만 사용할 수 있습니까? 아니면 스크립트/앱을 쓸 수 있습니까? –

답변

1
declare @x int = 4, @n int = 10 
declare @strg nvarchar(1000) = 'create table myTable (' 
declare @i int = 1 

while @i<= @x 
begin 
    set @strg = @strg + 'att' + cast(@i as varchar(5))+ ' int default ' + CAST(@i as varchar(5)) + ',' 
    set @i = @i + 1 
end 

set @strg = SUBSTRING(@strg, 1, LEN(@strg)-1) + ')' 
-- this creates your table 
exec sp_executesql @strg 


-- now lets insert rows 
set @i = 0 

while @i < @n 
begin 
    INSERT INTO myTable DEFAULT VALUES; 
    set @i = @i + 1 
end 

-- lets check 
select * 
from myTable 
1

여기 스크립트입니다. 이것을 저장 프로 시저에 넣거나 그대로 둘 수 있습니다. 당신이해야 할 일은 초기 col과 row 값을 업데이트하는 것입니다.

DECLARE 
@cols INT = 4, 
@rows INT = 10, 
@tablename VARCHAR(20) = 'TestTable' 


DECLARE 
@i INT = 1, 
@j INT = 1, 
@sql NVARCHAR(MAX) = 'create table ' + @tablename + '(' 

WHILE(@i <= @cols) 
BEGIN 
    SET @sql = @sql + 'att' + CAST(@i AS VARCHAR(10)) + ' VARCHAR(10)' 
    IF NOT @i = @cols 
    BEGIN 
     SET @sql = @sql + ', ' 
    END 
    SET @i = @i + 1 
END 

SET @sql = @sql + ')' 

EXECUTE sp_executesql @sql 

SET @sql = 'INSERT INTO ' + @tablename + ' VALUES' 

WHILE(@j <= @rows) 
BEGIN 
    SET @i = 1 
    SET @sql = @sql + '(' 
    WHILE(@i <= @cols) 
    BEGIN 
     SET @sql = @sql + '''' + CAST(@i AS VARCHAR(10)) + '''' 
     IF NOT @i = @cols 
     BEGIN 
      SET @sql = @sql + ', ' 
     END 
     SET @i = @i + 1 
    END 
    IF NOT @j = @rows 
    BEGIN 
     SET @sql = @sql + '), ' 
    END 
    SET @j = @j + 1 
END 

SET @sql = @sql + ')' 

EXECUTE sp_executesql @sql 

희망이 있습니다.

관련 문제