Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
marwest98
Starting Member
9 Posts |
Posted - 2011-09-21 : 15:55:40
|
I am selecting data in the stored procedure below that works great except in one situation. When selecting a record from the prodstructure file (C) if the prdstrparentitemno does not have a prdstrcomponentitemno of 260006 then I have to take the prdstrcomponentitemno and move it to the prdstrparentitemno and search for one that does (second Level component) If I find a 'second level' that has a component of 260006 I still must print the first parentitem on a label. For example: select * from dbo.ProdStructureFile Ainner join ProdStructureFile BON A.PrdStrParentItemNo=B.PrdStrComponentItemNowhere B.PrdStrParentItemNo = '600972'and A.PrdStrComponentItemNo='260006'The first select without the inner join and the and condition would return a prdstrparentitemno of 600972 with the inner join I get CA32112 L as the prdstrparentitemno field that would print on the label not the 600972I'm lost at how to get this to work.My stored procedure that works for all other items but this situation looks like:USE [SilverLabel]GO/****** Object: StoredProcedure [dbo].[sel_OrderInformation] Script Date: 09/21/2011 15:45:22 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: Mary Westerman-- Create date: 08/17/11-- Description: Stored procedure to get order -- information necessary to create-- a silverlabel--[sel_OrderInformation] '74543','74714','260006','Y'-- =============================================ALTER PROCEDURE [dbo].[sel_OrderInformation] -- Add the parameters for the stored procedure here @BegOrderNo nvarchar(6), @EndOrderNo nvarchar(6), @label nvarchar(6), @useCustPartNo nvarchar (1) ASBEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; SELECT CAST(a.OrderNo as NVarchar), CAST(a.OrderCustomerNo as NVarchar), CAST(a.OrderShippingDate as NVarchar), CAST(B.LineItemQtyToShip as NVarchar), CAST(C.prdstrComponentItemNo as NVarchar), CAST(RIGHT(a.OrderNo,3) as NVARCHAR(3))Ord, CAST(C.PrdStrParentItemNo as NVArchar) From dbo.COPOrderHeaderFile as A Inner Join dbo.COPOrderLineItemFile as B on A.OrderNo = B.LineItemOrderNo Inner Join dbo.ProdStructureFile as C on ltrim(rtrim(B.LineItemItemNo)) = ltrim(rtrim(c.PrdStrParentItemNo))left join dbo.ProdStructureFile as D ON D.PrdStrParentItemNo=C.PrdStrComponentItemNo where A.OrderNo >= ltrim(rtrim(@BegOrderNo)) and A.OrderNo <= ltrim(rtrim(@EndOrderNo)) and B.LineItemLocation = ' 1' and LTRIM(rtrim(D.prdstrComponentItemNo)) = @label order by A.OrderNo CREATE Table #OrderItems (OrderNo NVarchar(20),ParentItem NVarchar(20),ShippingDate Int,Qty Int,MatlComponent NVarchar(10),Ord NVarchar(3),CustomerItem NVarchar(50)) -- Insert statements for procedure here if @useCustPartNo = 'N' Begin INSERT #OrderItems SELECT CAST(a.OrderNo as NVarchar), CAST(a.OrderCustomerNo as NVarchar), CAST(a.OrderShippingDate as NVarchar), CAST(B.LineItemQtyToShip as NVarchar), CAST(C.prdstrComponentItemNo as NVarchar), CAST(RIGHT(a.OrderNo,3) as NVARCHAR(3))Ord, CAST(C.PrdStrParentItemNo as NVArchar) From dbo.COPOrderHeaderFile as A Inner Join dbo.COPOrderLineItemFile as B on A.OrderNo = B.LineItemOrderNo Inner Join dbo.ProdStructureFile as C on ltrim(rtrim(B.LineItemItemNo)) = ltrim(rtrim(c.PrdStrParentItemNo))left join dbo.ProdStructureFile as D ON D.PrdStrParentItemNo=C.PrdStrComponentItemNo where A.OrderNo >= ltrim(rtrim(@BegOrderNo)) and A.OrderNo <= ltrim(rtrim(@EndOrderNo)) and B.LineItemLocation = ' 1' and LTRIM(rtrim(D.prdstrComponentItemNo)) = @label order by A.OrderNo end else if @useCustPartNo = 'Y' Begin INSERT #OrderItems SELECT a.OrderNo, a.OrderCustomerNo, a.OrderShippingDate, B.LineItemQtyToShip, C.prdstrComponentItemNo, RIGHT(a.OrderNo,3)Ord, ISNULL(D.CustPartCustPartNumber ,b.LineItemItemNo)CustPartCustPartNumber From dbo.COPOrderHeaderFile as A Inner Join dbo.COPOrderLineItemFile as B on A.OrderNo = B.LineItemOrderNo Left Outer Join dbo.ProdStructureFile as C on ltrim(rtrim(LEFT(B.LineItemItemNo,PATINDEX('%LW%',B.LineItemItemNo)-1))) = ltrim(rtrim(c.PrdStrParentItemNo)) Left Outer Join dbo.CustPartNumberFile as d on a.OrderCustomerNo = d.CustPartcustNumber2 where A.OrderNo >= @BegOrderNo and A.OrderNo <= @EndOrderNo and b.LineItemLocation = ' 1' and LTRIM(rtrim(C.prdstrComponentItemNo)) = @label and B.LineItemItemNo like '%LW%' union SELECT a.OrderNo, a.OrderCustomerNo, a.OrderShippingDate, B.LineItemQtyToShip, C.prdstrComponentItemNo, RIGHT(a.OrderNo,3)Ord, ISNULL(D.CustPartCustPartNumber ,b.LineItemItemNo)CustPartCustPartNumber From dbo.COPOrderHeaderFile as A Inner Join dbo.COPOrderLineItemFile as B on A.OrderNo = B.LineItemOrderNo Left Outer Join dbo.ProdStructureFile as C on ltrim(rtrim(B.LineItemItemNo)) = ltrim(rtrim(c.PrdStrParentItemNo)) Left Outer Join dbo.CustPartNumberFile as d on a.OrderCustomerNo = d.CustPartcustNumber2 where A.OrderNo >= @BegOrderNo and A.OrderNo <= @EndOrderNo and b.LineItemLocation = ' 1' and LTRIM(rtrim(C.prdstrComponentItemNo)) = @label order by A.OrderNo end SELECT OrderNo ShopOrder#,CustomerItem Item#,CAST(Right(ShippingDate,6) as varchar(10))+'-'+Cast(RIGHT('000' + RTRIM(ltrim(rtrim(Ord))), 3)as Varchar(6))Serial#,Qty FROM #OrderItemsENDPlease help. Mary Westerman |
|
|
marwest98
Starting Member
9 Posts |
Posted - 2011-09-21 : 15:59:41
|
| Forgot to mention the second join to the prodstructure file was a test (D), Does not work.Thanks,Mary Westerman |
 |
|
|
|
|
|
|
|