在SQL中将行转换为列

时间:2012-02-14 16:38:01

标签: sql-server-2008

我有一个用户定义的函数来解析字符串。我的字符串看起来像1@>@100。因此,当我调用我的函数时,它返回三个记录,其中包含1,>我需要将这些结果作为列插入到临时表中。

我的临时表有三列。

或者您可以认为我有TEMP表(表只有一列)有3行,我需要将结果转换为3列。

所以select * from #tmptable会给我3行,但我需要将所有3行显示为列。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

除非我误解了这个问题:

INSERT INTO tablename VALUES(1,'>',100);

除非第一列和第三列是字符串,否则你也会在它们周围加上单引号。

答案 1 :(得分:0)

您可以尝试在临时表中添加标识并执行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