I have a CSV file that imports into SQL in the below format, theres a key field then repeating values that need to be on seperate rows, each new part needs to be a new row can anyone suggest some SQL to help, I've managed to pivot the data however this only returns the first parts data.
Current CSV IMPORT
Header | Data |
---|---|
Load number | 220511 |
Part | 1234 |
Lot | AB14 |
Qty | 10 |
Part | 4567 |
Lot | HD14 |
Qty | 19 |
Current Pivot
Load Number | Part | Lot | QTY |
---|---|---|---|
220511 | 1234 | AB14 | 10 |
Required Pivot
Load Number | Part | Lot | QTY |
---|---|---|---|
220511 | 1234 | AB14 | 10 |
220511 | 4567 | HD14 | 19 |
Current Code
Select [Load number ],
[part number ],
[lot number ],
[quantity ]
From
(Select LTRIM(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(Header,'Item',''),0,''),1,''),2,''),3,''),4,''),5,''),6,''),7,''),8,''),9,'')) as HEADER, Data From (Select LTRIM(SUBSTRING([column1],1,CASE CHARINDEX(':', [column1])WHEN 0
THEN LEN([column1])
ELSE CHARINDEX(':', [column1]) - 1
END)) AS HEADER ,LTRIM(SUBSTRING([column1], CASE CHARINDEX(':', [column1])
WHEN 0
THEN LEN([column1]) + 1
ELSE CHARINDEX(':', [column1]) + 1
END, 1000)) AS DATA FROM [BCW_TREAT].[dbo].[DMSIMPORTLOAD]) as d
Where HEADER = 'Load number' or HEADER like '%part%' or HEADER like '%lot%'or HEADER like '%quantity%' or Data > '0' or Data <> '""') b
pivot
(max(DATA)
for HEADER in ([Load number ],
[part number ],
[lot number ],
[quantity ])) piv