--要求统计结果1select d.抽检项目,m.工程名,m.监督号
,抽检总组数=sum(d.抽检组数)
,合格组数=sum(case d.抽检结果 when '合格' then d.抽检组数 else 0 end)
,不合格组数=sum(case d.抽检结果 when '不合格' then d.抽检组数 else 0 end)
from Main m,detail d
where m.ID=d.关联ID
group by d.抽检项目,m.工程名,m.监督号
order by m.工程名,m.监督号,d.抽检项目
,抽检总组数=sum(d.抽检组数)
,合格组数=sum(case d.抽检结果 when '合格' then d.抽检组数 else 0 end)
,不合格组数=sum(case d.抽检结果 when '不合格' then d.抽检组数 else 0 end)
from Main m,detail d
where m.ID=d.关联ID
group by d.抽检项目,m.工程名,m.监督号
order by m.工程名,m.监督号,d.抽检项目
具體sql沒有寫。
,抽检总组数=sum(d.抽检组数)
,合格组数=sum(case d.抽检结果 when '合格' then d.抽检组数 else 0 end)
,不合格组数=sum(case d.抽检结果 when '不合格' then d.抽检组数 else 0 end)
from detail d
group by d.抽检项目
create table Main(ID int,工程名 nvarchar(10),监督号 nvarchar(10))
insert Main select '51','工程0001','2005_0009'
union all select '52','工程0001','2005_0009'
union all select '53','工程0002','2004_0010'
union all select '54','工程0002','2004_0010'create table detail(ID int,关联ID int,抽检项目 nvarchar(10),抽检部位 nvarchar(10),抽检组数 int,抽检结果 nvarchar(10))
insert detail select '100','51','项目1','楼面','2','合格'
union all select '101','51','项目6','地基','3','不合格'
union all select '102','52','项目6','地基','2','合格'
union all select '103','52','项目6','楼面','3','不合格'
union all select '104','53','项目1','地基','4','不合格'
union all select '105','53','项目6','地基','2','合格'
union all select '106','54','项目1','地基','4','不合格'
union all select '107','54','项目6','地基','4','不合格'
union all select '107','54','项目6','基础','3','合格'
go--要求统计结果1
select d.抽检项目,m.工程名,m.监督号
,抽检总组数=sum(d.抽检组数)
,合格组数=sum(case d.抽检结果 when '合格' then d.抽检组数 else 0 end)
,不合格组数=sum(case d.抽检结果 when '不合格' then d.抽检组数 else 0 end)
from Main m,detail d
where m.ID=d.关联ID
group by d.抽检项目,m.工程名,m.监督号
order by m.工程名,m.监督号,d.抽检项目
--要求统计结果2
select d.抽检项目
,抽检总组数=sum(d.抽检组数)
,合格组数=sum(case d.抽检结果 when '合格' then d.抽检组数 else 0 end)
,不合格组数=sum(case d.抽检结果 when '不合格' then d.抽检组数 else 0 end)
from detail d
group by d.抽检项目
go--删除测试
drop table Main,detail/*--测试结果--要求统计结果1:抽检项目 工程名 监督号 抽检总组数 合格组数 不合格组数
---------- ---------- ---------- ----------- ----------- -----------
项目1 工程0001 2005_0009 2 2 0
项目6 工程0001 2005_0009 8 2 6
项目1 工程0002 2004_0010 8 0 8
项目6 工程0002 2004_0010 9 5 4(所影响的行数为 4 行)抽检项目 抽检总组数 合格组数 不合格组数
---------- ----------- ----------- -----------
项目1 10 2 8
项目6 17 7 10(所影响的行数为 2 行)--*/
select d.抽检项目,m.工程名,m.监督号
,抽检总组数=sum(d.抽检组数)
,合格组数=sum(case d.抽检结果 when '合格' then d.抽检组数 else 0 end)
,不合格组数=sum(case d.抽检结果 when '不合格' then d.抽检组数 else 0 end)
from Main m,detail d
where m.ID=d.关联ID
group by d.抽检项目,m.工程名,m.监督号
order by m.工程名,m.监督号,d.抽检项目