所以,让我们说我有超市的数据告诉我每种类型的水果已售出多少,我想知道每个超市销售的红色和绿色水果的总数。我有3张桌子:
表1是一个临时表,显示每个超市销售的水果数量,并且具有分配给变量列名称的值:
╔═══════╦════════╦════════╗
║ Apple ║ Banana ║ Cherry ║
╠═══════╬════════╬════════╣
║ 1 ║ 5 ║ 7 ║
║ 3 ║ 0 ║ 4 ║
╚═══════╩════════╩════════╝
表2是一个永久性表格,在第一列中包含我想要的列名,以及我需要查找哪些文本(例如,我不想要黄色水果,所以我不想要香蕉' s要导入的值):
╔═══════╦════════════╦══════════╗
║ Colour║ Lookup 1 ║ Lookup 2 ║
╠═══════╬════════════╬══════════╣
║ Red ║ Apple ║ Cherry ║
║ Green ║ Watermelon ║ Kiwi ║
╚═══════╩════════════╩══════════╝
表3是我的最终永久性表格,其中包含我想要的列和值:
╔═════════════╦═════╦═══════╗
║ Supermarket ║ Red ║ Green ║
╠═════════════╬═════╬═══════╣
║ Temco ║ 6 ║ 8 ║
║ ASPA ║ 2 ║ 4 ║
║ Sansbrys ║ 2 ║ 1 ║
║ Morris ║ 5 ║ 3 ║
╚═════════════╩═════╩═══════╝
使用表2中的值查找表1中列名的最佳方法是什么,然后将我想要的值插入表3中?
我已经到了这个阶段,这个过程的后半部分没有使用查找表2但完全停留在上半部分:
declare @sql nvarchar(max),
@Columns nvarchar(2000)
declare @table nvarchar(256) = '[etl].[Temco]'
truncate table etl.Supermarkets
SELECT @Columns = COALESCE(@Columns + ', ', '') + quotename(column_name)
from information_schema.columns
where table_name= 'Temco' and (column_name like '%Apple%' OR COLUMN_NAME LIKE '%Cherry%')
PRINT @Columns
set @Columns = left(@Columns,len(@Columns)-1) -- remove trailing comma
set @sql = ' insert into [etl].[Supermarkets]
([Red])
SELECT ' + @Columns + '] from ' +@table+' '
PRINT @sql
EXECUTE sp_executesql @sql, N'@table nvarchar(256)',
@table = @table