22,209
社区成员
发帖
与我相关
我的任务
分享
----------------------------------------------------------------
-- Author :DBA_HuangZJ(发粪涂墙)
-- Date :2014-03-07 16:29:35
-- Version:
-- Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)
-- Apr 2 2010 15:48:46
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
--
----------------------------------------------------------------
--> 测试数据[fend]
if object_id('[fend]') is not null drop table [fend]
go
create table [fend]([lb] nvarchar(2),[grade] int)
insert [fend]
select 'a',10 union all
select 'a',10 union all
select 'a',30 union all
select 'b',10 union all
select 'b',20 union all
select 'b',20 union all
select 'b',20
--------------生成数据--------------------------
select lb,grade,COUNT(1),(SELECT COUNT(1) FROM fend b WHERE fend.lb=b.lb)
from [fend]
GROUP BY lb,grade
----------------结果----------------------------
/*
lb grade
---- ----------- ----------- -----------
a 10 2 3
a 30 1 3
b 10 1 4
b 20 3 4
*/
select
lb,
sum(case when grade=10 then 1 else 0 end),
sum(case when grade=30 then 1 else 0 end)
from
fend
group by
lb
select
id,sum(case when grade=10 then 1 else 0 end),
sum(case when grade=30 then 1 else 0 end)
from
tb
group by
id