| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 875 人关注过本帖
标题:[求助]请帮我看看
取消只看楼主 加入收藏
lengxie
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-10-27
收藏
 问题点数:0 回复次数:5 
[求助]请帮我看看

有一个表a记录如下所示
BASE_WO DEPT_NAME QTY_BACKLOG
000004 包装 77622
000005 包装 77426
000006 PSA 1606
000006 包装 9652
000107 PSA 2160
000107 包装 32586
000107 字符 674
000107 湿菲林 46

现建一表b如下结构
BASE_WO DEPT1 DEPT2 DEPT3 DEPT4 DEPT5 QTY1 QTY2 QTY3 QTY4 QTY5


由于相同的BASE_wo不会超过5个所以才设计如上表
DEPT----QTY对应

现在要设计一个存储过程得到如下结果
BASE_WO DEPT1 DEPT2 DEPT3 DEPT4 DEPT5 QTY1 QTY2 QTY3 QTY4 QTY5
000004 包装 0 0 0 0 77622 0 0 0 0
000005 包装 0 0 0 0 77426 0 0 0 0
000006 PSA 包装 0 0 0 1606 9652 0 0 0
000107 PSA 包装 字符 湿菲林 0 2160 32586 674 46 0


[此贴子已经被作者于2007-2-6 11:52:42编辑过]

搜索更多相关主题的帖子: 包装 000006 
2007-02-06 11:36
lengxie
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-10-27
收藏
得分:0 
BASE_WO DEPT1 DEPT2 DEPT3 DEPT4 DEPT5 QTY1 QTY2 QTY3 QTY4 QTY5
000004 包装 0 0 0 0 77622 0 0 0 0
000005 包装 0 0 0 0 77426 0 0 0 0
000006 PSA 包装 0 0 0 1606 9652 0 0 0
000107 PSA 包装 字符 湿菲林 0 2160 32586 674 46 0
现在可以不?
2007-02-06 11:43
lengxie
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-10-27
收藏
得分:0 
以下是引用Kendy123456在2007-2-6 11:44:26的发言:
看看论坛关于行列转换的贴 很多的了

这个不一样的啊!!我发出来的只是一个小部分,DEPT有48种可能,但同时出现的最多只有5个部门也就是说是动态的,表b是做好的,现在就是要把A的数据放在B里面

2007-02-06 11:51
lengxie
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-10-27
收藏
得分:0 
不知道说清楚没有???其实就是一个工厂的生产流程,一个工单在哪个部门生产的部门名称和数量。现在要把A表的记录放进B表,DEPT---QTY是对应的,如果现在一个工单只有一个部门在生产那就如上结果的第一条记录
2007-02-06 11:58
lengxie
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-10-27
收藏
得分:0 
我试试。。。。谢谢了
2007-02-06 12:59
lengxie
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-10-27
收藏
得分:0 

CREATE PROCEDURE fill
@base varchar
AS

DECLARE @No int
DECLARE @Dep VARCHAR
DECLARE @Qty int
DECLARE @cnt INT
DECLARE @Base_WO_Main varchar
Declare Cur1 Cursor For
Select * from FILL_REQ_WIP WHERE BASE_WO=@base order by Base_WO
Open Cur1

FETCH NEXT FROM Cur1 INTO @No, @Dep, @Qty

Insert into b (Base_Wo,Dept1,qty1)values(@No, @Dep, @Qty)

Set @cnt = -1
set @Base_WO_Main = @No

WHILE @@FETCH_STATUS = 0
begin
if @Base_WO_Main = @No
begin
if @cnt <> -1
begin
if @cnt = 0
Insert into b (BASE_WO,DEPT1,QTY1) values (@No, @Dep, @Qty)
if @cnt = 1
Insert into b (BASE_WO,DEPT2,QTY2) values (@No, @Dep, @Qty)
if @cnt = 2
Insert into b (BASE_WO,DEPT3,QTY3) values (@No, @Dep, @Qty)
if @cnt = 3
Insert into b (BASE_WO,DEPT4,QTY4) values (@No, @Dep, @Qty)
if @cnt = 4
Insert into b (BASE_WO,DEPT5,QTY5) values (@No, @Dep, @Qty)

set @cnt = @cnt + 1
end
else
Set @cnt =1
End
--end
else
begin
Insert into b (BASE_WO,DEPT1,QTY1)
values (@No, @Dep, @Qty)
set @Base_WO_Main = @No
set @cnt = 0
end

FETCH NEXT FROM Cur1 INTO @No, @Dep, @Qty
close Cur1

end
GO

EXEC fill '000046'
服务器: 消息 16915,级别 16,状态 1,过程 fill,行 11
A cursor with the name 'Cur1' already exists.
服务器: 消息 16905,级别 16,状态 1,过程 fill,行 12
The cursor is already open.

(所影响的行数为 1 行)

Select * from FILL_REQ_WIP WHERE BASE_WO='000046' order by Base_WO 是有记录的可是现在B表都是NULL
版主没有记录的啊

[此贴子已经被作者于2007-2-6 14:02:16编辑过]

2007-02-06 13:55
快速回复:[求助]请帮我看看
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021609 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved