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 中使用动态生成的字段进行添加?