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
张三 中国 ......
SQLServer 模式就是,把Session 存放在 SQL Server 数据库里(注意不是 Oracle ,动动脚趾都能猜到原因啦),下面开始说明一下设置的具体步骤:
1、 启动相关的数据库服务(如图)
运行SQL Server 服务管理器 → 启动 SQL Server (最好设为开机自动运行) → 启动 SQL Server Agent 服务(最好设为开机自动运行)
注意事项:
a)、注意启动顺序,也可通过下列方式设置: 右键点击“我的电脑”→ 管理 → 服务与应用程序 → 服务 → 找到“MSSQLSERVER”与“SQLSERVERAGENT” → 启动并设置启动类型为“自动”
b)、SQL Server Agent在此处的作用是清除数据库中已过期的 Session
2、 建立存放 Session 的 DataBase
运行“SQL 查询分析器”→ 使用“sa”或是拥有“master”的 db_owner 权限的用户登录数据库 → 打开查询文件 C:\WINNT\Microsoft.NET\Framework\v1.1.4322\InstallSqlState.sql (存放在 Windows 系统目录的 .Net 安装目录下可找 ......
21 一个SQLServer的自定义函数中调用一个自定义的存储过程,执行此函数后发出如下提示:“只有函数和扩展存储过程才能从函数内部执行"。
原因:函数只能使用简单的sql语句,逻辑控制语句,复杂一点的存储过程是不能调用的,在函数里也不能使用execute sp_executesql 或者execute 。解决方法把函数改为存储过程,然后在另一个存储过程中象调用函数一样使用此存储过程就可以了。
下面是一个存储过程调用另一个存储过程的实例,有参数传递的。
--存储过程sp_B
create proc sp_B
@A int ,
@B int ,
@C int output
AS
set @C = @A + @B
go
--存储过程p_A
create proc sp_A
@A int ,
@B int
as
declare   ......
SQLServer和Oracle的常用函数对比
1.绝对值
S:select abs(-1) value
O:select abs(-1) value from dual
2.取整(大)
S:select ceiling(-1.001) value
O:select ceil(-1.001) value from dual
3.取整(小)
S:select floor(-1.001) value
O:select floor(-1.001) value from dual
4.取整(截取)
S:select cast(-1.002 as int) value
O:select trunc(-1.002) value from dual
5.四舍五入
S:select round(1.23456,4) value 1.23460
O:select round(1.23456,4) value from dual 1.2346
6.e为底的幂
S:select Exp(1) value 2.7182818284590451
O:select Exp(1) value from dual 2.71828182
7.取e为底的对数
S:select log(2.7182818284590451) value 1
O:select ln(2.7182818284590451) value from dual; 1
8.取10为底对数
S:select log10(10) value 1
O:select log(10,10) value from dual; 1
9.取平方
S:select SQUARE(4) value 16
O:select power(4,2) value from dual 16
10.取平方根
S:sele ......
SQLServer和Oracle的常用函数对比
1.绝对值
S:select abs(-1) value
O:select abs(-1) value from dual
2.取整(大)
S:select ceiling(-1.001) value
O:select ceil(-1.001) value from dual
3.取整(小)
S:select floor(-1.001) value
O:select floor(-1.001) value from dual
4.取整(截取)
S:select cast(-1.002 as int) value
O:select trunc(-1.002) value from dual
5.四舍五入
S:select round(1.23456,4) value 1.23460
O:select round(1.23456,4) value from dual 1.2346
6.e为底的幂
S:select Exp(1) value 2.7182818284590451
O:select Exp(1) value from dual 2.71828182
7.取e为底的对数
S:select log(2.7182818284590451) value 1
O:select ln(2.7182818284590451) value from dual; 1
8.取10为底对数
S:select log10(10) value 1
O:select log(10,10) value from dual; 1
9.取平方
S:select SQUARE(4) value 16
O:select power(4,2) value from dual 16
10.取平方根
S:sele ......
一。SqlServer自动作业备份
1、打开SQL Server Management Studio
2、启动SQL Server代理
3、点击作业->新建作业
4、"常规"中输入作业的名称
5、新建步骤,类型选T-SQL,在下面的命令中输入下面语句
DECLARE @strPath NVARCHAR(200)
set @strPath = convert(NVARCHAR(19),getdate(),120)
set @strPath=replace(@strPath,'-','')
set @strPath=replace(@strPath,' ','')
set @strPath=replace(@strPath,':','')
set @strPath=substring(@strPath,0,13)
set @strPath = 'D:\DataBack\' + DBName'+@strPath + '.bak'
BACKUP DATABASE [DBName] TO DISK = @strPath WITH NOINIT , NOUNLOAD , NOSKIP , STATS = 10, NOFORMAT
(D:\DataBack\改为自己的备份路径,DBName修改为想备份的数据库的名称)
6、添加计划,设置频率,时间等。
确定,完成。 ......
select
table_name=
(
case when t_c.column_id=1
then t_o.name
else ''
end
),
column_id=t_c.column_id,
column_name=t_c.name,
type=t.name,
max_length=t_c.max_length,
precision=isnull(t_c.precision,0),
scale=isnull(t_c.scale,0),
is_identity=case when t_c.is_identity=1 then '√' else '' end,
is_primary=
(
case when exists
(
select 1 from sys.indexes i,sys.index_columns ic,sys.objects o
&nb ......