select a.商品ID,a.商品名称,a.商品规格
,供应数量=sum(a.供应数量)
,b.建议供应商,a.单位
from 表 a,(
select 数量=max(数量),建议供应商
from 表
group by 建议供应商
)b where a.数量=b.数量 and a.建议供应商=b.建议供应商
group by a.商品ID,a.商品名称,a.商品规格,b.建议供应商,a.单位
,供应数量=sum(a.供应数量)
,b.建议供应商,a.单位
from 表 a,(
select 数量=max(数量),建议供应商
from 表
group by 建议供应商
)b where a.数量=b.数量 and a.建议供应商=b.建议供应商
group by a.商品ID,a.商品名称,a.商品规格,b.建议供应商,a.单位
,供应数量=sum(a.供应数量)
,c.建议供应商,a.单位
from 表 a,(
select 数量=max(数量),商品ID
from 表
group by 商品ID
)b,表 c
where b.数量=c.数量 and b.商品ID=c.商品ID
and a.商品ID=c.商品ID and a.建议供应商=c.建议供应商
group by a.商品ID,a.商品名称,a.商品规格,c.建议供应商,a.单位
select f=identity(int,1,1),* into #t from 表
where f not in(select min(f) from 表 group by 商品ID)
drop table #t
from(
select a.商品ID,a.商品名称,a.商品规格
,供应数量=sum(a.数量)
,a.单位
from 表 a
group by a.商品ID,a.商品名称,a.商品规格,a.单位
)a,(
select a.商品ID,b.建议供应商
from(
select 数量=max(数量),商品ID
from 表
group by 商品ID
)a,表 b
where a.数量=b.数量 and a.商品ID=b.商品ID
group by a.商品ID,b.建议供应商
)b where a.商品ID=b.商品ID
create table 表(商品ID int,商品名称 varchar(20),商品规格 varchar(10),数量 money,建议供应商 varchar(10),单位 varchar(10))
insert 表 select 100042 ,'PVC胶' ,'50kg/桶' ,100.0000,'中石化','kg'
union all select 100061 ,'湿材胶' ,'4kg' ,100.0000,'中石化','千克'
union all select 10201 ,'一汽中华轿(豪华型)','aa' ,200.0000,'22' ,'辆'
union all select 10201 ,'一汽中华轿(豪华型)','aa' ,100.0000,'吴冠英','辆'
union all select 1020102,'凯跃' ,'ddd' ,100.0000,'吴冠英','吨'
go--查询
select a.商品ID,a.商品名称,a.商品规格,a.供应数量,b.建议供应商,a.单位
from(
select a.商品ID,a.商品名称,a.商品规格
,供应数量=sum(a.数量)
,a.单位
from 表 a
group by a.商品ID,a.商品名称,a.商品规格,a.单位
)a,(
select a.商品ID,b.建议供应商
from(
select 数量=max(数量),商品ID
from 表
group by 商品ID
)a,表 b
where a.数量=b.数量 and a.商品ID=b.商品ID
group by a.商品ID,b.建议供应商
)b where a.商品ID=b.商品ID
go--删除测试
drop table 表/*--测试结果商品ID 商品名称 商品规格 供应数量 建议供应商 单位
----------- ------------------- ---------- ----------- ---------- ------
10201 一汽中华轿(豪华型) aa 300.0000 22 辆
100042 PVC胶 50kg/桶 100.0000 中石化 kg
100061 湿材胶 4kg 100.0000 中石化 千克
1020102 凯跃 ddd 100.0000 吴冠英 吨(所影响的行数为 4 行)
--*/
a.商品名称,
a.商品规格,
sum(a.供应数量) as 供应数量,
b.建议供应商,
a.单位
from
youtable a
inner join
(select 建议供应商,max(数量) as 数量 from youtable group by 建议供应商) b
on
a.数量=b.数量 and a.建议供应商=b.建议供应商
group by
a.商品ID,a.商品名称,a.商品规格,b.建议供应商,a.单位
create table 表(商品ID int,商品名称 varchar(20),商品规格 varchar(10),数量 money,建议供应商 varchar(10),单位 varchar(10))
insert 表 select 100042 ,'PVC胶' ,'50kg/桶' ,100.0000,'中石化','kg'
union all select 100061 ,'湿材胶' ,'4kg' ,100.0000,'中石化','千克'
union all select 10201 ,'一汽中华轿(豪华型)','aa' ,200.0000,'22' ,'辆'
union all select 10201 ,'一汽中华轿(豪华型)','aa' ,100.0000,'吴冠英','辆'
union all select 10201 ,'一汽中华轿(豪华型)','aa' ,150.0000,'吴冠英','辆'
union all select 1020102,'凯跃' ,'ddd' ,100.0000,'吴冠英','吨'
go--查询
select a.商品ID,a.商品名称,a.商品规格,a.供应数量,b.建议供应商,a.单位
from(
select a.商品ID,a.商品名称,a.商品规格
,供应数量=sum(a.数量)
,a.单位
from 表 a
group by a.商品ID,a.商品名称,a.商品规格,a.单位
)a,(
select a.商品ID,b.建议供应商
from(
select 数量=max(数量),商品ID
from 表
group by 商品ID
)a,表 b
where a.数量=b.数量 and a.商品ID=b.商品ID
group by a.商品ID,b.建议供应商
)b where a.商品ID=b.商品ID
go--删除测试
drop table 表/*--测试结果商品ID 商品名称 商品规格 供应数量 建议供应商 单位
----------- ------------------- ---------- ----------- ---------- ------
10201 一汽中华轿(豪华型) aa 450.0000 22(这个就不对了,呵呵,吴冠英两次共250) 辆
100042 PVC胶 50kg/桶 100.0000 中石化 kg
100061 湿材胶 4kg 100.0000 中石化 千克
1020102 凯跃 ddd 100.0000 吴冠英 吨(所影响的行数为 4 行)
--*/
( select 商品ID, sum(数量) 供应数量, max(数量) 数量 from 表 group by 商品ID ) B
where A.商品ID = B.商品ID and A.数量 = B.数量 group by A.商口ID, A.数量, B.供应数量
create table 表(商品ID int,商品名称 varchar(20),商品规格 varchar(10),数量 money,建议供应商 varchar(10),单位 varchar(10))
insert 表 select 100042 ,'PVC胶' ,'50kg/桶' ,100.0000,'中石化','kg'
union all select 100061 ,'湿材胶' ,'4kg' ,100.0000,'中石化','千克'
union all select 10201 ,'一汽中华轿(豪华型)','aa' ,200.0000,'22' ,'辆'
union all select 10201 ,'一汽中华轿(豪华型)','aa' ,100.0000,'吴冠英','辆'
union all select 10201 ,'一汽中华轿(豪华型)','aa' ,150.0000,'吴冠英','辆'
union all select 1020102,'凯跃' ,'ddd' ,100.0000,'吴冠英','吨'
go--查询
select a.商品ID,a.商品名称,a.商品规格,a.供应数量,b.建议供应商,a.单位
from(
select a.商品ID,a.商品名称,a.商品规格
,供应数量=sum(a.数量)
,a.单位
from 表 a
group by a.商品ID,a.商品名称,a.商品规格,a.单位
)a,(
select a.商品ID,b.建议供应商
from(
select 数量=max(数量),商品ID
from (select 商品ID,建议供应商,sum(数量) as 数量 from 表 group by 商品ID,建议供应商) x
group by 商品ID
)a,(select 商品ID,建议供应商,sum(数量) as 数量 from 表 group by 商品ID,建议供应商) b
where a.数量=b.数量 and a.商品ID=b.商品ID
group by a.商品ID,b.建议供应商
)b where a.商品ID=b.商品ID
go
create table 表(商品ID int,商品名称 varchar(20),商品规格 varchar(10),数量 money,建议供应商 varchar(10),单位 varchar(10))
insert 表 select 100042 ,'PVC胶' ,'50kg/桶' ,100.0000,'中石化','kg'
union all select 100061 ,'湿材胶' ,'4kg' ,100.0000,'中石化','千克'
union all select 10201 ,'一汽中华轿(豪华型)','aa' ,200.0000,'22' ,'辆'
union all select 10201 ,'一汽中华轿(豪华型)','aa' ,100.0000,'吴冠英','辆'
union all select 10201 ,'一汽中华轿(豪华型)','aa' ,150.0000,'吴冠英','辆'
union all select 1020102,'凯跃' ,'ddd' ,100.0000,'吴冠英','吨'
go--查询
select a.商品ID,a.商品名称,a.商品规格,a.供应数量,b.建议供应商,a.单位
from(
select a.商品ID,a.商品名称,a.商品规格
,供应数量=sum(a.数量)
,a.单位
from 表 a
group by a.商品ID,a.商品名称,a.商品规格,a.单位
)a,(
select a.商品ID,b.建议供应商
from(
select 数量=max(数量),商品ID
from (select 商品ID,建议供应商,sum(数量) as 数量 from 表 group by 商品ID,建议供应商) x
group by 商品ID
)a,(select 商品ID,建议供应商,sum(数量) as 数量 from 表 group by 商品ID,建议供应商) b
where a.数量=b.数量 and a.商品ID=b.商品ID
group by a.商品ID,b.建议供应商
)b where a.商品ID=b.商品ID
go--删除测试
drop table 表/*--测试结果商品ID 商品名称 商品规格 供应数量 建议供应商 单位
----------- ------------------- ---------- ----------- ---------- ------
10201 一汽中华轿(豪华型) aa 450.0000 吴冠英 辆 这样就对了,呵呵,但是写的麻烦
100042 PVC胶 50kg/桶 100.0000 中石化 kg
100061 湿材胶 4kg 100.0000 中石化 千克
1020102 凯跃 ddd 100.0000 吴冠英 吨(所影响的行数为 4 行)
--*/
declare @t table (商品ID int,商品名称 varchar(20),商品规格 varchar(10),数量 money,建议供应商 varchar(10),单位 varchar(10))insert @t select 100042 ,'PVC胶' ,'50kg/桶' ,100.0000,'中石化','kg'
union all select 100061 ,'湿材胶' ,'4kg' ,100.0000,'中石化','千克'
union all select 10201 ,'一汽中华轿(豪华型)','aa' ,200.0000,'22' ,'辆'
union all select 10201 ,'一汽中华轿(豪华型)','aa' ,100.0000,'吴冠英','辆'
union all select 1020102,'凯跃' ,'ddd' ,100.0000,'吴冠英','吨'--查询
select A.商品ID, max(A.商品名称), max(A.商品规格), B.供应数量, max(A.建议供应商), max(A.单位) from @t A,
( select 商品ID, sum(数量) 供应数量, max(数量) 数量 from @t group by 商品ID ) B
where A.商品ID = B.商品ID and A.数量 = B.数量 group by A.商品ID, A.数量, B.供应数量/*
结果:
商品ID 供应数量
----------- -------------------- ---------- --------------------- ---------- ----------
10201 一汽中华轿(豪华型) aa 300.0000 22 辆
100042 PVC胶 50kg/桶 100.0000 中石化 kg
100061 湿材胶 4kg 100.0000 中石化 千克
1020102 凯跃 ddd 100.0000 吴冠英 吨
*/
我以前写的和你们的差不多 ,但是数量一相等数据就出现膨胀了
from(
select a.商品ID,a.商品名称,a.商品规格
,供应数量=sum(a.数量)
,a.单位
from 表 a
group by a.商品ID,a.商品名称,a.商品规格,a.单位
)a,(
select a.商品ID,建议供应商=max(b.建议供应商)
from(
select 数量=max(数量),商品ID
from 表
group by 商品ID
)a,表 b
where a.数量=b.数量 and a.商品ID=b.商品ID
group by a.商品ID
)b where a.商品ID=b.商品ID
create table 表(商品ID int,商品名称 varchar(20),商品规格 varchar(10),数量 money,建议供应商 varchar(10),单位 varchar(10))
insert 表 select 100042 ,'PVC胶' ,'50kg/桶' ,100.0000,'中石化','kg'
union all select 100061 ,'湿材胶' ,'4kg' ,100.0000,'中石化','千克'
union all select 10201 ,'一汽中华轿(豪华型)','aa' ,200.0000,'22' ,'辆'
union all select 10201 ,'一汽中华轿(豪华型)','aa' ,100.0000,'吴冠英','辆'
union all select 10201 ,'一汽中华轿(豪华型)','aa' ,350.0000,'吴英1' ,'辆'
union all select 10201 ,'一汽中华轿(豪华型)','aa' ,350.0000,'吴英2' ,'辆'
union all select 10201 ,'一汽中华轿(豪华型)','aa' ,350.0000,'吴英3' ,'辆'
union all select 1020102,'凯跃' ,'ddd' ,100.0000,'吴冠英','吨'
go--查询
select a.商品ID,a.商品名称,a.商品规格,a.供应数量,b.建议供应商,a.单位
from(
select a.商品ID,a.商品名称,a.商品规格
,供应数量=sum(a.数量)
,a.单位
from 表 a
group by a.商品ID,a.商品名称,a.商品规格,a.单位
)a,(
select a.商品ID,建议供应商=max(b.建议供应商)
from(
select 数量=max(数量),商品ID
from 表
group by 商品ID
)a,表 b
where a.数量=b.数量 and a.商品ID=b.商品ID
group by a.商品ID
)b where a.商品ID=b.商品ID
go--删除测试
drop table 表/*--测试结果商品ID 商品名称 商品规格 供应数量 建议供应商 单位
----------- ------------------- ---------- ----------- ---------- ------
10201 一汽中华轿(豪华型) aa 1350.0000 吴英3 辆
100042 PVC胶 50kg/桶 100.0000 中石化 kg
100061 湿材胶 4kg 100.0000 中石化 千克
1020102 凯跃 ddd 100.0000 吴冠英 吨(所影响的行数为 4 行)
--*/