大家好有一张表(tb1)的内容大概如下:
月份    铸件号                  造型码  型板号   项目  产量1   产量2
1 29Z66-04081          BB101    7 0 106
1 29Z66-04081          BB101 0  3 0 0
1 29Z66-04081          BB101 0  5 0 0
1 29Z66-04081          BB101 D4 7 206 0
1 29Z66-04081          BBZZZ 0  1 0 0
2 29Z66-04081          BB101    7 0 149
2 29Z66-04081          BB101 0  3 0 0
2 29Z66-04081          BB101 0  5 0 0
2 29Z66-04081          BB101 D4 7 0 0
2 29Z66-04081          BBZZZ 0  1 0 0
…………………………………………
…………………………
现在需要查询的结果 所得的数据如下:
月份        铸件号                  造型码     项目  产量1       产量2
1 29Z66-04081          BB101   3 0 0
1 29Z66-04081          BB101   5 0 0
1 29Z66-04081          BB101   7 206 106
1 29Z66-04081          BBZZZ   1 0 0
2 29Z66-04081          BB101   3 0 0
2 29Z66-04081          BB101   5 0 0
2 29Z66-04081          BB101   7 0 149
2 29Z66-04081          BBZZZ   1 0 0
也就是在同一个月份同一个铸件号,同一个造型码下,项目=7的重复此处至少有两次的,产量1,产量2字段的数据就相加
项目值为其他的保持不变,因为每个零件号在不同月中只有项目=7才可能在同一月份同一造型线,同铸件号下出现2次以上,其他的3 5 1 只会出现一次

解决方案 »

  1.   

    create table tb(月份 int,铸件号 nvarchar(30),造型码 nvarchar(10),型板号 nvarchar(10),项目 int,产量1 int,产量2 int)
    insert into tb select 1,'29Z66-04081','BB101','',7,0,106
    insert into tb select 1,'29Z66-04081','BB101','0',3,0,0
    insert into tb select 1,'29Z66-04081','BB101','0',5,0,0
    insert into tb select 1,'29Z66-04081','BB101','D4',7,206,0
    insert into tb select 1,'29Z66-04081','BBZZZ','0',1,0,0
    insert into tb select 2,'29Z66-04081','BB101','',7,0,149
    insert into tb select 2,'29Z66-04081','BB101','0',3,0,0
    insert into tb select 2,'29Z66-04081','BB101','0',5,0,0
    insert into tb select 2,'29Z66-04081','BB101','D4',7,0,0
    insert into tb select 2,'29Z66-04081','BBZZZ','0',1,0,0
    go
    select 月份,铸件号,造型码,项目,产量1,产量2 from tb where 项目<>7
    union all
    select 月份,铸件号,造型码,项目,sum(产量1),sum(产量2) from tb where 项目=7 group by 月份,铸件号,造型码,项目 order by 月份
    go
    drop table tb
    /*
    月份          铸件号                            造型码        项目          产量1         产量2
    ----------- ------------------------------ ---------- ----------- ----------- -----------
    1           29Z66-04081                    BB101      3           0           0
    1           29Z66-04081                    BB101      5           0           0
    1           29Z66-04081                    BBZZZ      1           0           0
    1           29Z66-04081                    BB101      7           206         106
    2           29Z66-04081                    BB101      7           0           149
    2           29Z66-04081                    BB101      3           0           0
    2           29Z66-04081                    BB101      5           0           0
    2           29Z66-04081                    BBZZZ      1           0           0(8 行受影响)*/