CREATE TABLE #Temp (
OPCol VARCHAR(128),
OPDetailCol VARCHAR(128),
OPXCol VARCHAR(128)
)
--Add sample data, representing some random OPX values that may already exist.
INSERT INTO #Temp (OPCol, OPDetailCol, OPXCol)
VALUES
('OP','OP_DETAIL','OP_4'),
('OP','OP_DETAIL','OP_22'),
('OP','OP_DETAIL','OP_39'),
('OP','OP_DETAIL','OP_70')
--Common table expression with recursion.
;WITH CTE AS
(
SELECT 1 AS OPCounter
UNION ALL
SELECT OPCounter + 1
FROM CTE
WHERE OPCounter < 100
)
INSERT INTO #Temp (OPCol, OPDetailCol, OPXCol)
SELECT 'OP','OP_DETAIL','OP_' + CAST(OPCounter AS VARCHAR(3))
FROM CTE
WHERE NOT EXISTS (
SELECT 1
FROM #Temp t
WHERE t.[OPXCol] = 'OP_' + CAST(OPCounter AS VARCHAR(3))
)
--Verify results
SELECT * FROM #Temp