WITH SplitData AS (
SELECT
[RecoveryKey],
[DateTime],
[DialedNumberString],
[Variable9],
VALUE AS PartValue,
ROW_NUMBER() OVER (PARTITION BY RecoveryKey ORDER BY (SELECT NULL)) AS PartNumber
FROM Route_Call_Detail RCD
CROSS APPLY STRING_SPLIT(Variable9, '|')
WHERE Variable9 LIKE 'TST|%' AND DateTime > GetDate()-1
)
SELECT
RecoveryKey,
DateTime,
DialedNumberString,
Variable9,
MAX(CASE WHEN PartNumber = 1 THEN PartValue END) AS Part1,
MAX(CASE WHEN PartNumber = 2 THEN PartValue END) AS Part2,
MAX(CASE WHEN PartNumber = 3 THEN PartValue END) AS Part3,
MAX(CASE WHEN PartNumber = 4 THEN PartValue END) AS Part4,
MAX(CASE WHEN PartNumber = 5 THEN PartValue END) AS Part5,
MAX(CASE WHEN PartNumber = 6 THEN PartValue END) AS Part6,
MAX(CASE WHEN PartNumber = 7 THEN PartValue END) AS Part7,
MAX(CASE WHEN PartNumber = 8 THEN PartValue END) AS Part8,
MAX(CASE WHEN PartNumber = 9 THEN PartValue END) AS Part9,
MAX(CASE WHEN PartNumber = 10 THEN PartValue END) AS Part10,
MAX(CASE WHEN PartNumber = 11 THEN PartValue END) AS Part11
FROM SplitData
GROUP BY RecoveryKey, DateTime, DialedNumberString, Variable9
ORDER BY RecoveryKey;