34,838
社区成员




create table ITEM(CALL_NO varchar(10),IN_DATE int)
insert into ITEM select 'A00001',2005
insert into ITEM select 'A00001',2006
insert into ITEM select 'A00001',2006
insert into ITEM select 'A00001',2006
insert into ITEM select 'A00001',2007
insert into ITEM select 'A00001',2007
insert into ITEM select 'A00001',2008
insert into ITEM select 'A00001',2008
insert into ITEM select 'A00001',2009
insert into ITEM select 'A00002',2006
insert into ITEM select 'A00002',2006
insert into ITEM select 'A00002',2007
insert into ITEM select 'A00002',2008
insert into ITEM select 'A00002',2009
insert into ITEM select 'A00003',2006
insert into ITEM select 'A00003',2007
insert into ITEM select 'A00003',2007
insert into ITEM select 'A00004',2005
insert into ITEM select 'A00004',2005
insert into ITEM select 'A00005',2009
insert into ITEM select 'A00005',2009
go
declare @year int
set @year=2007
select
left(CALL_NO,1) as 类型,
count(distinct case IN_DATE when @year then CALL_NO end) as [2007(种数)],
sum(case IN_DATE when @year then 1 else 0 end) as [2007(数量)],
count(distinct case when IN_DATE<@year then CALL_NO end) as [截至上年总的(种数)],
sum(case when IN_DATE<@year-1 then 1 else 0 end) as [截至上年总的(数量)],
count(distinct case when IN_DATE<=year(getdate()) then CALL_NO end) as [截至当前年总的(种数)],
sum(case when IN_DATE<=year(getdate()) then 1 else 0 end) as [截至当前年总的(数量)]
from
ITEM
group by
left(CALL_NO,1)
go
/*
类型 2007(种数) 2007(数量) 截至上年总的(种数) 截至上年总的(数量) 截至当前年总的(种数) 截至当前年总的(数量)
---- ----------- ----------- ----------- ----------- ----------- -----------
A 3 5 4 3 5 21
*/
drop table ITEM
go
create table ITEM(CALL_NO varchar(10),IN_DATE int)
insert into ITEM select 'A00001',2005
insert into ITEM select 'A00001',2006
insert into ITEM select 'A00001',2006
insert into ITEM select 'A00001',2006
insert into ITEM select 'A00001',2007
insert into ITEM select 'A00001',2007
insert into ITEM select 'A00001',2008
insert into ITEM select 'A00001',2008
insert into ITEM select 'A00001',2009
insert into ITEM select 'A00002',2006
insert into ITEM select 'A00002',2006
insert into ITEM select 'A00002',2007
insert into ITEM select 'A00002',2008
insert into ITEM select 'A00002',2009
insert into ITEM select 'A00003',2006
insert into ITEM select 'A00003',2007
insert into ITEM select 'A00003',2007
insert into ITEM select 'A00004',2005
insert into ITEM select 'A00004',2005
insert into ITEM select 'A00005',2009
insert into ITEM select 'A00005',2009
insert into ITEM select 'B00001',2008
insert into ITEM select 'B00002',2007
insert into ITEM select 'B00002',2008
insert into ITEM select 'C00001',2007
go
declare @year int
set @year=2010
select
left(CALL_NO,1)as 种类,
count(distinct case IN_DATE when @year then CALL_NO end) as 种数,
sum(case in_date when @year then 1 else 0 end)as 的数量,
count(distinct case when IN_DATE<@year then call_no end) as 截止上年的种数,
sum(case when in_date <@year then 1 else 0 end ) as 截止上年的数量,
count (distinct case when in_date <=year(getdate()) then call_no end) AS 截至当前年总的种树,
sum(case when IN_DATE <= year(getdate()) then 1 else 0 end) 截至当前年总的数量
from
ITEM
group by
left(CALL_NO,1)
结果:
A 0 0 5 21 5 21
B 0 0 2 3 2 3
C 0 0 1 1 1 1
select
left(CALL_NO,1),
count(distinct case IN_DATE when @year then CALL_NO end) ,
sum(case IN_DATE when @year then 1 else 0 end),
count(distinct case IN_DATE when @year-1 then CALL_NO end),
sum(case IN_DATE when @year-1 then 1 else 0 end),
isnull(count(distinct case IN_DATE when year(getdate()) then CALL_NO end),0),
sum(case IN_DATE when year(getdate()) then 1 else 0 end)
from
ITEM
group by
left(CALL_NO,1)
create table ITEM(CALL_NO varchar(10),IN_DATE int)
insert into ITEM select 'A00001',2005
insert into ITEM select 'A00001',2006
insert into ITEM select 'A00001',2006
insert into ITEM select 'A00001',2006
insert into ITEM select 'A00001',2007
insert into ITEM select 'A00001',2007
insert into ITEM select 'A00001',2008
insert into ITEM select 'A00001',2008
insert into ITEM select 'A00001',2009
insert into ITEM select 'A00002',2006
insert into ITEM select 'A00002',2006
insert into ITEM select 'A00002',2007
insert into ITEM select 'A00002',2008
insert into ITEM select 'A00002',2009
insert into ITEM select 'A00003',2006
insert into ITEM select 'A00003',2007
insert into ITEM select 'A00003',2007
insert into ITEM select 'A00004',2005
insert into ITEM select 'A00004',2005
insert into ITEM select 'A00005',2009
insert into ITEM select 'A00005',2009
go
declare @year int
set @year=2007
select
left(CALL_NO,1),
count(distinct case IN_DATE when @year then CALL_NO end) ,
sum(case IN_DATE when @year then 1 else 0 end),
count(distinct case when IN_DATE<=@year-1 then CALL_NO end),
sum(case when IN_DATE <=@year-1 then 1 else 0 end),
count(distinct case when IN_DATE<=year(getdate()) then CALL_NO end),
sum(case when IN_DATE <= year(getdate()) then 1 else 0 end)
from
ITEM
group by
left(CALL_NO,1)
go
/*
A 3 5 4 9 5 21
*/
drop table ITEM
go
create table ITEM(CALL_NO varchar(10),IN_DATE int)
insert into ITEM select 'A00001',2005
insert into ITEM select 'A00001',2006
insert into ITEM select 'A00001',2006
insert into ITEM select 'A00001',2006
insert into ITEM select 'A00001',2007
insert into ITEM select 'A00001',2007
insert into ITEM select 'A00001',2008
insert into ITEM select 'A00001',2008
insert into ITEM select 'A00001',2009
insert into ITEM select 'A00002',2006
insert into ITEM select 'A00002',2006
insert into ITEM select 'A00002',2007
insert into ITEM select 'A00002',2008
insert into ITEM select 'A00002',2009
insert into ITEM select 'A00003',2006
insert into ITEM select 'A00003',2007
insert into ITEM select 'A00003',2007
insert into ITEM select 'A00004',2005
insert into ITEM select 'A00004',2005
insert into ITEM select 'A00005',2009
insert into ITEM select 'A00005',2009
go
declare @year int
set @year=2007
select
left(CALL_NO,1),
count(distinct case IN_DATE when @year then CALL_NO end) ,
sum(case IN_DATE when @year then 1 else 0 end),
count(distinct case IN_DATE when @year-1 then CALL_NO end),
sum(case IN_DATE when @year-1 then 1 else 0 end),
count(distinct case IN_DATE when year(getdate()) then CALL_NO end),
sum(case IN_DATE when year(getdate()) then 1 else 0 end)
from
ITEM
group by
left(CALL_NO,1)
go
drop table ITEM
go