I have data in a column as (LastName, FirstName (EmpId)) I need LastName and FirstName in separate columns. I have created 2 CTEs. I am not being able to achieve the same with one CTE. Also, if there's a better way to achieve this, please advise
IF OBJECT_ID('tempdb..#tempMyTable') IS NOT NULL
DROP TABLE #tempMyTable
CREATE TABLE #tempMyTable(
REPORT_TO varchar(25) not null
)
INSERT INTO #tempMyTable
VALUES
('MILLER, BEN (BMR09876)'),
('LON, JOHN (JLON45098)'),
('WILSON, MARY (MWN2345)');
WITH CTE_Name AS (
SELECT [REPORT_TO], LEFT([REPORT_TO], Charindex(',', [REPORT_TO]) -1) as LNAME,
RIGHT([REPORT_TO], LEN([REPORT_TO]) - CHARINDEX(',', [REPORT_TO])) as FNAME
FROM #tempMyTable
), CTE_FNAME AS (
SELECT Report_To, LName, LEFT(FName, CHARINDEX('(', FName)-2) as FName
FROM CTE_Name
)
SELECT *
FROM CTE_FNAME
You can replace the temp table with a SELECT ... VALUES in a CTE, eg: