I am trying to split Serial No of a order item table , which has string separated values. I am able to separate the value but serial no allocation is not happening correctly, Its just showing additional rows.
Table has data like
OrderID OrderItemID Item Price SerialNo
100 101 P1 200.50 OW52288-OW52289-OW52290-OW52291-OW52292-OW52293
100 102 P1 200.50 NULL
100 103 P1 100.50 NULL
100 104 P1 300.40 NULL
100 105 P1 600.30 NULL
100 106 P1 300.50 NULL
100 107 P1 500.70 NULL
100 108 P1 200.60 NULL
100 109 P1 800.60 NULL
Result coming
OrderID OrderItemID Item Price value
100 101 P1 200.50 OW52288
100 101 P1 200.50 OW52289
100 101 P1 200.50 OW52290
100 101 P1 200.50 OW52291
100 101 P1 200.50 OW52292
100 101 P1 200.50 OW52293
Required result
OrderID OrderItemID Item Price SerialNo
100 101 P1 200.5 OW52288
100 102 P1 200.5 OW52289
100 103 P1 100.5 OW52290
100 104 P1 300.4 OW52291
100 105 P1 600.3 OW52292
100 106 P1 300.5 OW52293
100 107 P1 500.7 NULL
100 108 P1 200.6 NULL
100 109 P1 800.6 NULL
--Can please help me
Table & query I am writing
CREATE TABLE dbo.TestOrderItemSerial(
[OrderID] [int] NOT NULL,
[OrderItemID] [int] NOT NULL,
[Item] [nvarchar](50) NULL,
[Price] [money] NOT NULL,
[SerialNo] [nvarchar](100) )
Insert into dbo.TestOrderItemSerial values
(100,101,'P1',200.50,'OW52288-OW52289-OW52290-OW52291-OW52292-OW52293')
Insert into dbo.TestOrderItemSerial (OrderID,OrderItemID,Item,Price)values
(100,102,'P1',200.50)
Insert into dbo.TestOrderItemSerial (OrderID,OrderItemID,Item,Price) values
(100,103,'P1',100.50)
Insert into dbo.TestOrderItemSerial (OrderID,OrderItemID,Item,Price) values
(100,104,'P1',300.40)
Insert into dbo.TestOrderItemSerial (OrderID,OrderItemID,Item,Price) values
(100,105,'P1',600.30)
Insert into dbo.TestOrderItemSerial (OrderID,OrderItemID,Item,Price) values
(100,106,'P1',300.50)
Insert into dbo.TestOrderItemSerial (OrderID,OrderItemID,Item,Price) values
(100,107,'P1',500.70)
Insert into dbo.TestOrderItemSerial (OrderID,OrderItemID,Item,Price) values
(100,108,'P1',200.60)
Insert into dbo.TestOrderItemSerial (OrderID,OrderItemID,Item,Price) values
(100,109,'P1',800.60)
select OrderID,OrderItemID,Item,Price,value
FROM dbo.TestOrderItemSerial with (nolock)
CROSS APPLY String_Split(REPLACE(REPLACE((
CASE WHEN CHARINDEX('-',SerialNo) = 3 THEN REPLACE (SerialNo,'-','')
WHEN CHARINDEX(' ',SerialNo) = 3 THEN REPLACE (SerialNo,' ','')
WHEN CHARINDEX(' ',SerialNo) = 6 THEN REPLACE (SerialNo,' ','-')
ELSE SerialNo END)
,',','-'),'/','-'),'-')