以下查询为每列生成一个值(最小值):
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);