La requête suivante produit une valeur (minimum) pour chaque colonne:
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
Toutefois, cela génère une requête distincte pour chaque ligne. Pour les combiner ensemble, vous avez besoin d'une concaténation d'agrégat de chaînes. Voici comment vous le feriez dans 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);
Que voulez-vous dire «une ligne particulière» dans la table 1? Vous pouvez ajouter une constante à une requête SQL, juste 'SELECT 'Value'' –