SQL查询的问题,大神请进.........急
有下列表
create table test(RiQi datetime,ShuLiang int,JieGuo nvarchar(50))
insert test values('2013-2-1',10,'成功')
insert test values('2013-2-2',20,'失败')
insert test values('2013-2-3',10,'失败')
insert test values('2013-2-4',40,'成功')
insert test values('2013-2-5',20,'失败')
insert test values('2013-2-6',30,'成功')
insert test values('2013-2-7',30,'成功')
select ShuLiang
,count(case when JieGuo='成功' then 1 end) [成功]
,count(case when JieGuo='失败' then 1 end) [失败]
from test with(nolock)
group by ShuLiang
--结果
ShuLiang 成功 失败
----------- ----------- -----------
10 1 1
20 0 2
30 2 0
40 1 0
select ShuLiang,
成功=SUM(case when JieGuo='成功' then 1 else 0 end),
失败=SUM(case when JieGuo='失败' then 1 else 0 end)
from test
group by ShuLiang
create table test(RiQi datetime,ShuLiang int,JieGuo nvarchar(50))
insert test values('2013-2-1',10,'成功')
insert test values('2013-2-2',20,'失败')
insert test values('2013-2-3',10,'失败')
insert test values('2013-2-4',40,'成功')
insert test values('2013-2-5',20,'失败')
insert test values('2013-2-6',30,'成功')
insert test values('2013-2-7',30,'成功')
select
ShuLiang,
成功=sum(case when JieGuo='成功' then 1 else 0 end),
失败=sum(case when JieGuo='失败' then 1 else 0 end)
from
test
group by
ShuLiang
/*
ShuLiang成功失败
-------------------------------
1011
2002
3020
4010
*/
select
RiQi,
ShuLiang=isnull((select sum(ShuLiang) from test b where b.RiQi
between dateadd(dd,-2,a.RiQi) and dateadd(dd,-1,a.riqi)),0)
from
test a
/*
RiQiShuLiang
-------------------------------------
2013-02-01 00:00:00.0000
2013-02-02 00:00:00.00010
2013-02-03 00:00:00.00030
2013-02-04 00:00:00.00030
2013-02-05 00:00:00.00050
2013-02-06 00:00:00.00060
2013-02-07 00:00:00.00050
*/
DECLARE @test TABLE(RiQi datetime,ShuLiang int,JieGuo nvarchar(50))
insert @test values('2013-2-1',10,'成功')
insert @test values('2013-2-2',20,'失败')
insert @test values('2013-2-3',10,'失败')
insert @test values('2013-2-4',40,'成功')
insert @test values('2013-2-5',20,'失败')
insert @test values('2013-2-6',30,'成功')
insert @test values('2013-2-7',30,'成功')
SELECT ShuLiang,
SUM(CASE WHEN JieGuo = '成功' THEN 1 ELSE 0 END),
SUM(CASE WHEN JieGuo = '失败' THEN 1 ELSE 0 END)
FROM @test GROUP BY ShuLiang
select riqi,ShuLiang+(select top 1 shuliang from test where riqi<a.riqi order by riqi desc) from test a
SELECT ShuLiang,
SUM(CASE JieGuo WHEN '成功' THEN 1 ELSE 0 END),
SUM(CASE JieGuo WHEN '失败' THEN 1 ELSE 0 END)
FROM test GROUP BY ShuLiang
select riqi,
ShuLiang+(select top 1 shuliang
from test where riqi<a.riqi order by riqi desc) ShuLiang
from test a