sql - 使用映射表数据值动态选择数据
问题描述
我有一个映射表,我有 DatacolumnName。这是映射表数据
ID CustomObjectID ObjectFieldName DataColumnName CustomerID UserID IsActive CustomObjectName
1047 2074 CompanyName Column_1 18 17 1 CompanyObject
1049 2074 Email Column_3 18 17 1 CompanyObject
1050 2074 CompanyPhone Column_4 18 17 1 CompanyObject
1051 2074 CompanyBranch Column_5 18 17 1 CompanyObject
1052 2074 BranchCode Column_6 18 17 1 CompanyObject
1053 2074 City Column_7 18 17 1 CompanyObject
1054 2074 PostalCode Column_8 18 17 1 CompanyObject
1055 2074 Country Column_9 18 17 1 CompanyObject
我的数据表记录是另一个表,表名是 CustomData
Column_1 Column_3 Column_4 Column_5 Column_6 Column_7 Column_8 Column_9
Software umar@gmail 03115171558 Miami 123 LA 786345test USA1
但是我需要使用映射表值(ObjectFieldName)在标题中显示数据,例如
CompanyName Email CompanyPhone CompanyBranch BranchCode City PostalCode Country
Software umar@gmail 03115171558 Miami 123 LA 786345test USA1
我需要使用这些标题显示数据。每次表映射列都更改了,所以我需要动态完成。如果有人请帮助我。
解决方案
我已经解决了这个问题,如果有人遇到同样的问题,我将分享我的 sql 脚本,可以从我分享的脚本中得到一个想法。
declare @count int
declare @temp table (id int not null primary key identity(1,1) ,customdataid int, columnname varchar(max), fieldname varchar(max))
insert into @temp
select CustomObjectID, DataColumnName , ObjectFieldName from CustomObjectMappingTable
set @count = @@ROWCOUNT
declare @Coulmnname varchar(max) , @fieldname nvarchar(max)
while @count > 0
BEGIN
SELECT @Coulmnname = columnname , @fieldname = fieldname
FROM @temp
WHERE id=@count
declare @mergeColumnname varchar(max) = @Coulmnname + ' AS ' + @fieldname
declare @coltable table (ColumnNames Nvarchar(max))
insert into @coltable values ( '' + @mergeColumnname +'')
SET @count = @count - 1; -- Countdown
END
--select * from @coltable
DECLARE @cols NVARCHAR(MAX), @query1 NVARCHAR(MAX) , @DataValues NVARCHAR(max);
SET @cols = STUFF( (SELECT DISTINCT ','+ColumnNames FROM @coltable c FOR XML PATH(''), TYPE ).value('.', 'nvarchar(max)'), 1, 1, '');
Declare @UpdateColumnQuery nvarchar(max)
SET @UpdateColumnQuery = 'select CustomobjectSchemaID , DataID , ' + @cols + ' from customdata where CustomObjectSchemaID = ' + CAST(@CustomObjectSchemaId As nvarchar(20))
EXEC( @UpdateColumnQuery )
推荐阅读
- android - MPChart-如何在组合图表上添加图标
- python - 如何仅根据使用Python的路径字符串计算目录中的子目录数
- postgresql - 如何使用 postgres 按不同的标准对行进行排序
- log4j - 如何将 Logback 附加到 smartfox 服务器
- google-apps-script - Apps Script Google Sheets POP up 选择是或否总是发送电子邮件,无论
- c# - 在实体框架中如何配置影子拥有的实体?
- django - Django-q如何从代码中删除计划任务
- php - 托管一个没有 PHP 和 MySQL 的动态网站
- vue.js - Vue-multiselect 使用 AJAX 更新字段
- textinput - 如何在键盘事件上显示数据列表弹出窗口