SQL Server 中动态字段的转换

Posted

技术标签:

【中文标题】SQL Server 中动态字段的转换【英文标题】:Transformation of dynamic fields in SQL Server 【发布时间】:2018-06-12 10:40:20 【问题描述】:

根据以下场景,我如何从 View 中实现此输出。

我只是这样尝试

SELECT ',DynamicField'+ CAST(Seq AS NVARCHAR(10)) + ' as ' 
+ '['+ FieldName + ']' FROM dbo.Feilds
 WHERE FieldName IS NOT null FOR XML PATH('') ) 

以上查询返回

 ,DynamicField1 as [Name],DynamicField2 as [Fname],DynamicField3 as [Lname]
 ,DynamicField4 as [Gender],DynamicField5 as [Country] 





SELECT id,Employeeid,DynamicField1 as [Name]
  ,DynamicField2 as [Fname],DynamicField3 as [Lname]
  ,DynamicField4 as [Gender],DynamicField5 as [Country] FROM TransactionDetails

【问题讨论】:

欢迎来到 SO,大多数人更喜欢文字而不是图像。到目前为止,您有没有尝试过任何事情,我们很乐意为您提供帮助 这不只是一个简单的选择查询,您的列调用按所需顺序吗? @preeti 如果我理解正确,您需要将列名命名为 DynamicField1 as [Name] 而不是 name 对吗? 是的,没错,我需要根据字段表获取交易详情列作为别名。 @preeti 最简单的方法是在字段名称中添加方括号 【参考方案1】:

试试这种方式,将列名括在[]中

SELECT ','+'['+'DynamicField'+ CAST(Seq AS NVARCHAR(10)) + ' as ' 
+ FieldName + ']' FROM dbo.Feilds
 WHERE FieldName IS NOT null FOR XML PATH('')  

【讨论】:

对不起,不能按我的要求工作,我需要加入归档表和交易明细表。请注意,我需要这个视图的输出。 你能否包括查询你是如何加入两个表的? @@ven,请看我的评论。

以上是关于SQL Server 中动态字段的转换的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2005 中的水平到垂直表转换

SQL Server中动态列转行

如何在 Sql Server 中使用动态生成的字段进行添加?

SQL Server 动态 PIVOT 查询 - 字段顺序

SQL Server 动态行转列(参数化表名分组列行转列字段字段值)

SQL Server 动态行转列(参数化表名分组列行转列字段字段值)