各位,目前我把一张领料单用sql把竖表变成了横表,如图1,
sql语句如下:
ALTER PROCEDURE [dbo].[iqc_Getnpicks]
(
@p1no varchar(50),
@pono varchar(50)
)
AS
declare @sql varchar(8000)
set @sql = 'select pno as ' + '料號,Pname as 名稱'
select @sql = @sql + ' , sum(case pdat when ''' + pdat + ''' then plnm else 0 end) [' + pdat + ']'
from (select distinct pdat from vw_pickbom ) as a
set @sql = @sql + ' from vw_pickbom where p1no = ''' + @p1no + ''' and pono = ''' + @pono + ''' group by pno,Pname'exec(@sql)
RETURN
--图1而我要个记录要每条下要加入子项的BOM(如图2--效果图的黑色部分)--图2
资料库主要用到Picks and v_bom
黑色的子项数量是根据父项的数量得到(用Picks领料单的数量 * BOM的标准用量)
这个循环我该如何写好这个结果的SQL呢? 这个问题困扰我很多天了,求帮助,谢谢!!
sql语句如下:
ALTER PROCEDURE [dbo].[iqc_Getnpicks]
(
@p1no varchar(50),
@pono varchar(50)
)
AS
declare @sql varchar(8000)
set @sql = 'select pno as ' + '料號,Pname as 名稱'
select @sql = @sql + ' , sum(case pdat when ''' + pdat + ''' then plnm else 0 end) [' + pdat + ']'
from (select distinct pdat from vw_pickbom ) as a
set @sql = @sql + ' from vw_pickbom where p1no = ''' + @p1no + ''' and pono = ''' + @pono + ''' group by pno,Pname'exec(@sql)
RETURN
--图1而我要个记录要每条下要加入子项的BOM(如图2--效果图的黑色部分)--图2
资料库主要用到Picks and v_bom
黑色的子项数量是根据父项的数量得到(用Picks领料单的数量 * BOM的标准用量)
这个循环我该如何写好这个结果的SQL呢? 这个问题困扰我很多天了,求帮助,谢谢!!
BOM的资料如下图
[pid] [decimal](9, 0) IDENTITY(1,1) NOT NULL,
[pno] [varchar](20) NULL,
[p1no] [varchar](20) NULL,
[plnm] [decimal](18, 0) NULL,
[plnd] [datetime] NULL,
[pono] [varchar](50) NULL,
CONSTRAINT [PK_Picks] PRIMARY KEY CLUSTERED
(
[pid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
----------------------------------------------------
CREATE TABLE [dbo].[v_bom](
[de01] [varchar](20) NOT NULL,
[Expr1] [varchar](60) NULL,
[de02] [varchar](20) NOT NULL,
[Expr2] [varchar](60) NULL,
[de03] [float] NULL,
[de04] [float] NULL,
[da24] [varchar](6) NULL
) ON [PRIMARY]Picks.pno = v_bom.de01
我目前就是做到把竖的领料单记录(Picks)做成横表,如图一,而现在就是在每条下面循环加入其对应的子项BOM的树状架构,每个子项的领料数量就是其父项的Picks的plnm的领料数量计算出来的
也就是说显示了领料的明细,把今天的领料横表显示出来了,同时也把每个关联的子项BOM也明白的显示出来了
(<de01, varchar(20),> --父项物料
,<Expr1, varchar(60),> --父项物料名称
,<de02, varchar(20),> --子项物料
,<Expr2, varchar(60),> --子项物料名称
,<de03, float,> --子项用量
,<de04, float,> --父项用量
,<da24, varchar(6),>) --单位
VALUES
'1L334-ACS-0101','334小包用黑色包邊帶標准裁切','2Z-334BBD-0101','334小包用黑色包邊帶標准裁切',1,1,'個'
'1L334-ACS-0101','334小包內裡用牛津布標准裁切','2Z-334NJB-0101','334小包內裡用牛津布標准裁切',2,1,'個'
'1L334-ACS-0101','334小包用納帕PU皮標准裁切空軍藍','2Z-334PT-0100','334小包用納帕PU皮標准裁切空軍藍',2,1,個
'1L334-ACS-0101','0.25mm透明PVC膠片 48"','3P-PVC-2401','0.25mm透明PVC膠片',0.004,1,'碼'
'1L334-ACS-0101','車線 灰色 2股40# 8309#','3Z-CX-0601','車線 灰色 2股40# 8309#',1.8,1,'米'
'2Z-334BBD-0101','黑色尼龍包邊帶 好 41# 偏硬','3Z-BBD-0101','黑色尼龍包邊帶 好 41# 偏硬',0.33,1,'碼'
'1L334-ACS-0101','黑色1"人字紋3#拉鏈布 400碼/卷581A','3Z-LLB-0101','黑色1"人字紋3#拉鏈布',0.15,1,'碼'
'1L334-ACS-0101','白叻色拉鏈夾','3Z-LLJ-0401','白叻色拉鏈夾',1,1,'個'
'1L334-ACS-0101','3#黑色烤漆短排拉鏈頭','3Z-LLT-0101','3#黑色烤漆短排拉鏈頭',1,1,'個'
'2Z-334NJB-0101','牛津布 黑色150D 55','3Z-NJB-0101','牛津布 黑色150D',0.017,2,'碼'
'1L334-ACS-0101','103粉膠 皮套粘合用','6Z-103FJ-01','103粉膠 皮套粘合用',1,1,'克'
'1L334-ACS-0101','477號藥水膠 皮套粘合用','6Z-477JS-01','477號藥水膠 皮套粘合用',1.5,1,'克'
-----------------------------------------------------------------------
INSERT INTO [PRODUCTION11].[dbo].[Picks]
(<pno, varchar(20),> --领料的物料号 (1,2,3,4..流水号)
,<p1no, varchar(20),> -- 上层物料号
,<plnm, decimal(18,0),> --领料数量
,<plnd, datetime,> --领料日期
,<pono, varchar(50),>) --订单号
VALUES
1,'1L334-ACS-0101','ACS352-PALI-0100',200,'2012/3/3','2B2301E'
2,'2Z-352BZ-01','ACS352-PALI-0100',20,'2012/3/6','2B2301E'
3,'2Z-352BZ-01','ACS352-PALI-0100',20,'2012/3/6','2B2301E'
4,'2Z-SXD-41B00','ACS352-PALI-0100',20,'2012/3/6','2B2301E'贴些记录以便操作,谢谢!
if object_id('[v_bom]') is not null drop table [tb]
create table [v_bom] (de01 varchar(20),Expr1 varchar(60),de02 varchar(20),Expr2 varchar(60),de03 float,de04 float,da24 varchar(6))
insert into [v_bom]
select '1L334-ACS-0101','334小包用黑色包邊帶標准裁切','2Z-334BBD-0101','334小包用黑色包邊帶標准裁切',1,1,'個' union all
select '1L334-ACS-0101','334小包內裡用牛津布標准裁切','2Z-334NJB-0101','334小包內裡用牛津布標准裁切',2,1,'個' union all
select '1L334-ACS-0101','334小包用納帕PU皮標准裁切空軍藍','2Z-334PT-0100','334小包用納帕PU皮標准裁切空軍藍',2,1,'個' union all
select '1L334-ACS-0101','0.25mm透明PVC膠片 48"','3P-PVC-2401','0.25mm透明PVC膠片',0.004,1,'碼' union all
select '1L334-ACS-0101','車線 灰色 2股40# 8309#','3Z-CX-0601','車線 灰色 2股40# 8309#',1.8,1,'米' union all
select '2Z-334BBD-0101','黑色尼龍包邊帶 好 41# 偏硬','3Z-BBD-0101','黑色尼龍包邊帶 好 41# 偏硬',0.33,1,'碼' union all
select '1L334-ACS-0101','黑色1"人字紋3#拉鏈布 400碼/卷581A','3Z-LLB-0101','黑色1"人字紋3#拉鏈布',0.15,1,'碼' union all
select '1L334-ACS-0101','白叻色拉鏈夾','3Z-LLJ-0401','白叻色拉鏈夾',1,1,'個' union all
select '1L334-ACS-0101','3#黑色烤漆短排拉鏈頭','3Z-LLT-0101','3#黑色烤漆短排拉鏈頭',1,1,'個' union all
select '2Z-334NJB-0101','牛津布 黑色150D 55','3Z-NJB-0101','牛津布 黑色150D',0.017,2,'碼' union all
select '1L334-ACS-0101','103粉膠 皮套粘合用','6Z-103FJ-01','103粉膠 皮套粘合用',1,1,'克' union all
select '1L334-ACS-0101','477號藥水膠 皮套粘合用','6Z-477JS-01','477號藥水膠 皮套粘合用',1.5,1,'克' union allgo