--要求统计结果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.抽检项目

解决方案 »

  1.   

    實現我想就是通過group by求總,sum()匯總
    具體sql沒有寫。
      

  2.   

    --要求统计结果2select 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.抽检项目
      

  3.   

    --测试--测试数据
    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 行)--*/
      

  4.   

    --要求统计结果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.抽检项目
      

  5.   

    zjcxc(邹建)果然厲害,我苦想了好久,終於有了答案,再上來一看答案都貼好了,真是汗顏啊