22,302
社区成员




select GOODSID,DD1,
DD2=(select max(dd2) from tb where GOODSID=a.GOODSID and dd1=a.dd1),
SQT=(select sum(SQT) from tb where GOODSID=a.GOODSID and dd1=a.dd1),
IQT=(select sum(IQT) from tb where GOODSID=a.GOODSID and dd1=a.dd1),
OQT=(select sum(OQT) from tb where GOODSID=a.GOODSID and dd1=a.dd1),
CQT=(select sum(CQT) from tb where GOODSID=a.GOODSID and dd1=a.dd1)
from tb a group by GOODSID,DD1
只要结果的话 这样也行
SELECT goodsid,dd1,dd2=min(dd2),sqt=SUM(sqt),iqt=SUM(iqt),oqt=SUM(oqt),cqt=SUM(cqt)
FROM # GROUP BY goodsid,dd1
/*
goodsid dd1 dd2 sqt iqt oqt cqt
---------- ---------- ---------- ----------- ----------- ----------- -----------
A1001 C01 C0101 30 100 60 70
A1001 E22 C0101D 30 40 10 60
B2001 K22 C0101D 60 40 10 90
B2001 M22 C0101D 2 3 4 1
*/
create table #
(
GOODSID varchar(100),
DD1 varchar(100),
DD2 varchar(100),
SQT int,
IQT int,
OQT int,
CQT int
)
insert #
select 'A1001', 'C01', 'C0101', '30', '40', '50', '20' union all
select 'A1001', 'C01', 'C0101K', '0', '60', '10', '50' union all
select 'A1001', 'E22', 'C0101D', '30', '40', '10', '60' union all
select 'B2001', 'K22', 'C0101D', '60', '40', '10', '90' union all
select 'B2001', 'M22', 'C0101D', '2', '3', '4', '1'
select * from
(select distinct GOODSID, DD1 from #) a
cross apply
(select top(1) DD2 from # where GOODSID = a.GOODSID and DD1 = a.DD1 order by DD2) b
cross apply
(select SQT = sum(SQT), IQT = sum(IQT), OQT = sum(OQT), CQT = sum(CQT) from # where GOODSID = a.GOODSID and DD1 = a.DD1) c
select GOODSID,DD1,
DD2=(select max(dd2) from tb where GOODSID=a.GOODSID and dd1=a.dd1),
SQT=(select sum(SQT) from tb where GOODSID=a.GOODSID and dd1=a.dd1),
IQT=(select sum(IQT) from tb where GOODSID=a.GOODSID and dd1=a.dd1),
OQT=(select sum(OQT) from tb where GOODSID=a.GOODSID and dd1=a.dd1),
CQT=(select sum(CQT) from tb where GOODSID=a.GOODSID and dd1=a.dd1)
from tb a group by GOODSID,DD1