2012-02-14 79 views
0

我有一个用户定义的函数来分析字符串。我的字符串看起来像[email protected]>@100。所以当我调用我的函数时,它会返回三个记录,分别为1,>和100.我需要将这些结果作为列插入到临时表中。将行转换为SQL中的列

我的临时表有三列。

或者你可以考虑我有TEMP TABLE(表只有一列)用3行,我需要将结果转换成3列。

so select * from #tmptable会给我3行,但我需要显示所有3行作为列。 在此先感谢。

+0

你只是问了SQL插入值? – David 2012-02-14 16:40:15

回答

0

除非我误解的问题:

INSERT INTO 表名 VALUES(1, '>',100);

除非第一列和第三列是字符串,那么你也可以在它们周围加单引号。

+0

是的,我会得到 – jvm 2012-02-14 17:48:09

+0

1> 100作为3行,我需要插入到临时表中作为列 – jvm 2012-02-14 17:48:33

+0

有趣......上面的插入语句应该插入这三个值作为单个列正确,但你仍然会有其他地方需要删除三行。 – David 2012-02-14 18:55:08

0

你可以尝试添加一个身份到temp表,并执行PIVOT:

declare @t table(id int identity(1,1), strfrag varchar(8)) 
insert into @t values 
('1'), ('>'), ('100'); 

select [1],[2],[3] from @t 
pivot (
    max(strfrag) 
    for id in ([1],[2],[3]) 
) as pt; 

结果:

1  2  3 
-------- -------- -------- 
1  >  100 
+0

上面的查询给出错误说'max'附近的语法错误 – jvm 2012-02-17 20:27:28

+0

你完全复制和粘贴?我只是将上面的代码粘贴到SQL 2008中,并没有发生任何错误。在2005年,我不得不改变的只是插入。但没有枢轴错误。 – 2012-02-17 20:44:09