一个困了我很久的问题 ( 积分: 50 )

  • 主题发起人 主题发起人 panzichan
  • 开始时间 开始时间
P

panzichan

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个表gg
ID 产品型号 数量 生产批次 厂家
1 x1 2 2290 oo
2 x1 4 4354 00
3 x2 34 324 yy

我想得出以下的效果:
产品型号 数量 生产批次 厂家
x1 6 2290 oo
x2 34 324 yy
select 产品型号,sum( 数量) from gg group by 产品型号

可以分产品型号汇总, 但汇总时候我还要显示 生产批次 和厂家 怎么办?

select a.产品型号,a.数量,b.生产批次, b.厂家
(select 产品型号,sum( 数量) 数量 from gg group by 产品型号) a,
gg b
where a.产品型号=b.产品型号
 
还有一个问题 你想过没啊 同一个型号 如果不同厂家生产的怎么办啊?是不是要区别出来?
 
CREATE PROCEDURE goods


AS
declare @i int
declare @型号 char(20)
declare @数量 float
declare @批次 float
declare @厂家 char(50)
--变量声明

CREATE TABLE #temp(
项目 numeric(15, 0) NULL,
型号 char(50) NULL,
数量 numeric(15, 0) NULL,
批次 numeric(15, 2) NULL,
厂家 numeric(15, 2) NULL,
)

---按公司统计
if @Line=0
begin
insert into #temp
select 型号 null,null,null,null,厂家 from CK_Buy
DECLARE tmp_cursor CURSOR FOR
SELECT 型号,厂家 from #temp
OPEN tmp_cursor
select @i=1
FETCH NEXT FROM tmp_cursor INTO @型号,@厂家
WHILE @@FETCH_STATUS<>-1
BEGIN
select @数量=sum(数量),@批次=sum(批次) from gg
where (型号=@型号) and (厂家=@厂家)
update #temp set 项目=@i,数量=@数量,批次=@批次,厂家=@厂家,型号=@型号 where 厂家=@厂家 and 型号=@型号
FETCH NEXT FROM tmp_cursor INTO @型号,@厂家
select @i=@i+1
END
CLOSE tmp_cursor
DEALLOCATE tmp_cursor
end


SELECT * FROM #temp order by 项目
drop table #temp
GO
丢个存储过程给你 将不同的工厂区别开来了 如果不需要区别工厂 将
insert into #temp
select 型号 null,null,null,null,厂家 from gg
改成
insert into #temp
select 型号 null,null,null,null,null from gg
下面也改一下久OK了 大概久这样 没测 你试试
 
能有简单点的吗 你这个要建临时表 循环
 
select 产品型号,生产批次,厂家,sum( 数量) from gg group by 产品型号,生产批次,厂家
 
dreamisx:
这个不行
 
用两个表来处理不是就行,主表显示
产品型号 数量 厂家
细表显示:
产品型号 数量 生产批次 厂家
这样最清晰
 
太阳河上:
分开表肯定是行的 问题是有些表是另一个公司给的 已经有很多数据的 要在它的表结构上做事情 而不是自己做数据库
 
select s.*,m.生产批次 ,m.厂家
from (select ID,产品型号,sum( 数量) from gg group by 产品型号,ID) s
join gg m on m.id=s.id
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
681
import
I
后退
顶部