22,209
社区成员
发帖
与我相关
我的任务
分享
Select
min(col1),
min(col2),
min(col3),
min(col4),
min(col5),
min(col6),
min(col7),
min(col8)
from
table
group by x
DECLARE @sql NVARCHAR(MAX)
SELECT @sql=ISNULL(@sql,'')+ ',MIN('+ c.name+')
' FROM sys.[columns] AS c
WHERE c.[object_id]=OBJECT_ID('t')
AND c.name LIKE '%col%' --这里改动了一下
SET @sql='Select '+SUBSTRING(@sql,2,LEN(@sql))+'from t group by x ';
PRINT @sql
/*
Select MIN(col1)
,MIN(col2)
,MIN(col3)
,MIN(col4)
,MIN(col5)
,MIN(col6)
,MIN(col7)
,MIN(col8)
from t group by x
*/
EXEC (@sql)
USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL DROP TABLE t
GO
CREATE TABLE t(
id INT IDENTITY(1,1) PRIMARY KEY,
col1 INT,
col2 INT,
col3 INT,
col4 INT,
col5 INT,
col6 INT,
col7 INT,
col8 INT,
x INT
)
GO
--上面是构建测试表
DECLARE @sql NVARCHAR(MAX)
SELECT @sql=ISNULL(@sql,'')+ ',MIN('+ c.name+')
' FROM sys.[columns] AS c
WHERE c.[object_id]=OBJECT_ID('t')
AND c.name NOT IN ('id','x')
SET @sql='Select '+SUBSTRING(@sql,2,LEN(@sql))+'from t group by x ';
PRINT @sql
/*
Select MIN(col1)
,MIN(col2)
,MIN(col3)
,MIN(col4)
,MIN(col5)
,MIN(col6)
,MIN(col7)
,MIN(col8)
from t group by x
*/
EXEC (@sql)