当前位置 : 主页 > 网络编程 > 其它编程 >

将可变行数转换为列

来源:互联网 收集:自由互联 发布时间:2023-07-02
将可变行数转换为 如果您不希望提前知道这些值,那么您将需要使用动态SQL。这将创建一个将要执行的SQL字符串,这是必需的,因为在运行查询时必须知道列列表。 该代码将类似于:
将可变行数转换为

如果您不希望提前知道这些值,那么您将需要使用动态SQL。这将创建一个将要执行的SQL字符串,这是必需的,因为在运行查询时必须知道列列表。

该代码将类似于:

DeclARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX), @groupid as intset @groupid = 3select @cols = STUFF((SELECT distinct ',' + QUOTENAME(GroupName) from Columns_Table where groupid = @groupid FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'')set @query = 'SELECT ' + @cols + ' from ( SELECT B.GroupName, A.Value , row_number() over(partition by a.ColumnsTableID order by a.Value) seq FROM Values_Table AS A INNER JOIN Columns_Table AS B ON A.ColumnsTableID = B.ID where b.groupid = '+cast(@groupid as varchar(10))+' ) p pivot ( min(P.Value) for P.GroupName in (' + @cols + ') ) p 'execute sp_executesql @query;

请参阅带有演示的SQL Fiddle。对于3的groupid,结果将是:

| KENTROSAURUS | RAPTOR | TREX | TRICERATOPS || whatisthiseven | Itsaraptor | Jurassic | landbeforetime || (null) | zomg | Park | (null) |


上一篇:搭建mpi并行运算中遇到的问题与解决方案
下一篇:没有了
网友评论