SQL2005中按列聚合(取N列中的最大最小等)
create table [tb](ID int identity(1,1), a int, b int, c int, d int)
insert [tb] select 1,2,3,4 -- max: 4
union all select 5,2,8,3 -- max: 8
union all select 9,7,6,5 -- max: 9
union all select 0,9,2,2 -- max: 9
-- Method 1, by dobear
select ID, Max_abcd=max([value])
from tb
unpivot([value] for [abcd] in ([a], [b], [c], [d])) as U
group by ID
/*
ID Max_abcd
----------- -----------
1 4
2 8
3 9
4 9
(4 行受影响)
*/
--Method 2, by fcuandy
select ID=cast(b.ID as varchar(8)), Max_abcd=cast(b.v as varchar(8))
from (select x=cast((select * from tb for xml path('r')) as xml)) a
cross apply
(select ID=x.query('./ID/text()'),v=x.query('max(./*[local-name(.)!="ID"])')
from a.x.nodes('//r') as t(x)) b
/*
ID Max_abcd
-------- --------
1 4
2 8
3 9
4 9
(4 行受影响)
*/
drop table tb
...全文
相关推荐
取SQL分组中的某几行数据.docx
取出分组中某列的最大/最小值,不显示其他列这是一般情况下最常用的分组聚合操作,可以直接使用`GROUP BY`语句完成:```sqlSELECT UserID, MAX(OrderID) AS MaxOrderIDFROM
SQL 2005 列转行的方法
**方法一:使用PIVOT**PIVOT是SQL Server 2005引入的一个新特性,用于将一个表中的列转换为行。
SQL Server 2005范例代码查询辞典
MAX 和 MIN:找出最大值和最小值- **功能描述**:MAX聚合函数返回一组非NULL值中的最大值,而MIN聚合函数则返回最小值。
SQL中如何实现行转列,列转行的操作
**列转行**: 列转行则相反,它将列中的数据转化为多行。在SQL Server 2005及更高版本中,`UNPIVOT`运算符可以实现这一操作。
自定义聚合函数:用户定义的聚合函数——评估SQL Server 2005中的新功能.pdf
通过集成.NET Framework,SQL Server 2005为数据库开发者提供了一个更加丰富的开发环境,使得自定义聚合函数的实现变得更加高效和直观。


