标签归档:数据库

mssql sqlserver 将空值值转换为0的三种方法分享


摘要:
下文将通过举例的方式分享三种将空值值转换为0的方法分享
实验环境:sqlserver 2008 R2


下文将分别讲述使用sqlserver的三种函数进行空值替换:
isnull、case when 、coalesce 三种系统函数的方法处理空值,如下所示:
例:将表test中info列中的空值替换

  
 create table test(keyId int identity, info varchar(30))
   go
   insert into test(info)values('a'),('b'),(null),('d')
   go 
   ---方法1:使用isnull替换
   select keyId,isnull(info,0)  as info from test 
   go 
   ---方法2:使用case when 替换
   select keyId,case  when info is null then 0 else info  end as info  from test 
  ---方法3:使用coalesce替换相应的值
    select keyId , coalesce(info,0) as info from test 
  
   go 
   truncate table test 
   drop table test 

mssql sqlserver over(partition by)同group by之间的区别


摘要:
下文通过举例的方式分析 over(partition by)同group by 之间的区别,如下所示:
实验环境:sqlserver 2008 R2



一、over(partition by)同group by功能简介

over 函数 配合聚合函数(max、min、sum、avg、count等)或row_number等函数,可以在不改变原显示数据的情况下,新增一列作为聚合函数的计算值;
group by 子句只能同聚合函数(max、min、sum、avg、count),对相关列进行分组,只能展示出分组列和聚合列的数据。
over(partition by)比group by 具有更多的用武之地,具有更高级的功能
——————————————————————

二、over(partition by)同group by举例说明

  create table test(keyId int identity,sort varchar(10),qty int)
go
insert into test(qty,sort)values
(1,'a'),(2,'a'),(3,'b'),(8,'c'),(9,'c')
go
select *,sum(qty) over(partition by sort) as [分组小计]
,sum(qty) over()  as  [总计] from test 
order by keyId desc 

select sort ,sum(qty) from test 
group by sort 
go
truncate table test 
drop     table test 
mssql_sqlserver_over同groupby对比

mssql_sqlserver_over同groupby对比

mssql sqlserver 同时对表数据进行排序和分组小计总计的方法分享


摘要:
下文分享同事对表数据,进行排序和分组小计,总计的方法分享,如下所示:

实现思路:
主要使用开窗函数over进行相关操作,如下所示:

	 create table test(keyId int identity,sort varchar(10),qty int)
	go
		insert into test(qty,sort)values
		(1,'a'),(2,'a'),(3,'b'),(8,'c'),(9,'c')

    go

      select *,sum(qty) over(partition by sort) as [分组小计]
       ,sum(qty) over()  as  [总计] from test 
       order by keyId desc 

      go
     truncate table test 
     drop     table test
	 
mssql_sqlserver_分组小计和总计的方法分享

mssql_sqlserver_分组小计和总计的方法分享