【问题标题】:Select only those columns from a table header which are present in data dictionary ColumnName仅选择数据字典 ColumnName 中存在的表标题中的那些列
【发布时间】:2021-12-28 17:05:24
【问题描述】:

先决条件:所有表都是动态的,所以我不能使用列名 我有两张桌子

候选表: 包含所有需要选择的列和数据的表

数据字典: 我只有那些要选择查询的列的表 现在我要做的是只选择候选表中存在于数据字典中的数据和列,并跳过那些不存在于数据字典中的数据和列

我试过的是

SELECT ColumnName
INTO #Candidate
FROM DataDictionaryDetail WHERE DataDictionaryId =1

select *
from candidate
where NOT EXISTS (select *from #Candidate)

但这只会带来列而不是数据 我需要一种正确的方法来选择数据和列

【问题讨论】:

  • 您能否提供更多信息,例如表结构、数据样本...?

标签: sql sql-server-2012 inner-join


【解决方案1】:

为此您需要动态 SQL

DECLARE @sql nvarchar(max) = N'
SELECT
  '
+ (
    SELECT STRING_AGG(QUOTENAME(ColumnName), ',')
    FROM DataDictionaryDetail
    WHERE DataDictionaryId = 1
) + N'
from candidate;
';

EXEC sp_executesql @sql;

【讨论】:

  • 谢谢它的工作:),如果我想加入,你能告诉我怎么办
  • 如果我想从其他选项卡加入怎么办;e
  • 我建议您为此创建一个问题
猜你喜欢
  • 1970-01-01
  • 2019-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多