MSSQL一个关于Count函数的小实例

--创建测试表
if object_id(N'T_Test',N'U') is null     
  CREATE TABLE [dbo].[T_Test] (
  [ID] int IDENTITY(1, 1) PRIMARY key NOT NULL,
  [Grouping] varchar(50) NOT NULL,
  [Ret]   varchar(10) null,
  [Chk]   varchar(10) NULL
  )
GO
--插入数据
insert into T_Test values('A', 1, 'XXX')
insert into T_Test values('A', 2, 'XXX')
insert into T_Test values('A', 2, 'YYY')
insert into T_Test values('A', 2, null )
insert into T_Test values('A', 2, '' )
insert into T_Test values('A', null, 'cc' )
insert into T_Test values('A', '', 'cc' )
insert into T_Test values('B', 1, 'YYY')
insert into T_Test values('B', 3, 'XXX')
insert into T_Test values('B', 2, 'XXX')
insert into T_Test values('B', 4, null )
insert into T_Test values('B', 5, '' )
insert into T_Test values('B', null, 'cc' )
insert into T_Test values('B', '', 'cc' )

--1、根据Grouping字段分组 统计字段Ret(不为空)不同值的数量,
--2、根据Grouping字段分组 chk不为空的情况下,统计字段Ret(不为空)不同值的数量,
--主要利用count函数不统计NULL数量,nullif函数
select grouping, 
       --count(distinct case when isnull(ret, '')<>'' then ret else null end),
       count(distinct NULLIF(ret, '')),
       count(distinct case when isnull(chk, '')<>'' then NULLIF(ret, '') else null end)
from t_test group by GROUPING

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值