我想要执行一个 select 语句。我要选择
SELECT COLUMN_NAME AS FieldName FROM
INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'table1'
但是我想创建另一个名为 Value 的列,它是 table1 中的特定行 所以我有列名和相应的单个值的行。关于如何解决这个问题有什么想法吗?
最佳答案
以下查询为每列生成一个值(最小值):
SELECT '''select '+COLUMN_NAME+''' AS FieldName, (select cast(MIN('+COLUMN_NAME+') as varchar(8000)) from '+const.tablename+')'
FROM INFORMATION_SCHEMA.COLUMNS c cross join
(select 'AllCurveNames' as tablename) const
WHERE c.TABLE_NAME = const.tablename
但是,这会为每一行生成一个单独的查询。要将它们组合在一起,您需要一个字符串聚合串联。这是在 SQL Server 中执行此操作的方法:
declare @sql varchar(max);
SELECT @sql = (select 'select '''+COLUMN_NAME+''' AS FieldName, (select cast(MIN('+COLUMN_NAME+') as varchar(8000)) from '+const.tablename + ') union all '
FROM INFORMATION_SCHEMA.COLUMNS c cross join
(select WHATEVER as tablename) const
WHERE c.TABLE_NAME = const.tablename
for xml path('')
);
select @sql = LEFT(@sql, len(@sql) - 9);
exec(@sql);
关于SQL 架构和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10741074/