Sqlserver中Compute By子句用法分析
Sqlserver中Compute By子句用法分析
2007年04月20日 星期五 08:05
使用Compute by子句和行统计函数(count,sum,max,avg,min等),可以统计排序中结果完全相同的列,统计值作为查询结果以附加行的形式显示,
语法:Compute avg|count|max|min|sum by 表达式
1、举一个例子
比如有一个数据表:表名为person,三个字段分别为 name,age,country
select name,country,age from person where ?? order by a compute sum(age),max(age),min(age) by country
这个语句在查询时将数据按照country分组,然后分别显示每组的详细信息和统计信息。结果可能如下:
name country age
张三 中国 16
李四 中国 21
王五 中国 24
sum max min
61 24 16
=================================
name country &nb
相关文档:
Oracle存储过程转成Sqlserver存储过程
1.日期转换
Oracle: TO_NUMBER(TO_CHAR(SYSDATE, 'YYYYMMDD'))
SqlServer:CAST(CONVERT(CHAR(8),GETDATE(), 112) AS INT)
注:其中‘YYYYMMDD’格式 对应112
2.ROWID转换
Oracle: ROWID
SqlServer: PRIMARY KEY(表主键)
3.ROWNUM ......
select a.UserName 用户名,b.LoginName 号码,c.MenuTitle 标题,max(a.AccessTime)访问时间 from JfAccessLog a,OaUser b,JfMenu c where CONVERT(char,a.AccessTime,112)=CONVERT(char,GETDATE(),112) and a.UserId=b.UserId and a.MenuId=c.MenuId and a.MenuId=@menu group by a.UserName,b.LoginName,c.Menu ......
首先插句题外话:创建一个自然数表Nums。这是《SQL Server 2005技术内幕:T-SQL查询》一书的建议。
在SQL Server 2005中,可以借用ROW_NUMBER排名函数轻松生成我们所需的自然数表:
--自然数表1-1M
CREATE TABLE Nums(n int NOT NULL PRIMARY KEY CLUSTERED)
WITH B1 AS(SELECT n=1 UNION ALL SELECT n=1), --2
B2 AS( ......
有些常见的问题在论坛中不断出现,不妨整理一下。
以下语句是在SQLServer2005上实现的,一些语句无法在SS2000上执行。
有用指数是我根据这个问题的常见程度打的分,仅供参考。实际上,当你遇到了这个问题,这个问题哪怕再少见,解决方案也是非常有用的。
1. 生成若干行记录
有用指数:★★★★★
常见的问题类型:根据 ......