You can go the function way as well. Not sure what version you are on or how scalable the task needs to be.... I'd go with the solution entered by Abhipal.
-- ==================================================
-- CREATE FUNCTION dba_fn_SplitList
-- ==================================================
CREATE FUNCTION [dbo].[dba_fn_SplitList] (@param NVARCHAR(MAX), @delimiter CHAR(1))
RETURNS @t TABLE (val VARCHAR(150), seq INT)
AS
BEGIN
SET @param += @delimiter
;WITH A AS
(
SELECT CAST(1 AS BIGINT) F, CHARINDEX(@delimiter, @param) T, 1 Seq
UNION ALL
SELECT T + 1, CHARINDEX(@delimiter, @param, t + 1), Seq + 1
FROM A
WHERE CHARINDEX(@delimiter, @param, t + 1) > 0
)
INSERT @t
SELECT SUBSTRING(@param, f, t - f), seq
FROM A
OPTION (MAXRECURSION 0)
RETURN
END
GO
-- ============================================================================
-- Get the PartyIdList
-- ============================================================================
DECLARE @PartyIDList VARCHAR(MAX)
SET @PartyIDList = '75000A5,750007,1,3434,4546,676,750009,7500011,7500021,75000251,,75000251,750004'
BEGIN TRY
IF OBJECT_ID('tempdb.dbo.#Party') IS NOT NULL DROP TABLE #Party
CREATE TABLE #Party (RID INT IDENTITY(1,1) NOT NULL PRIMARY KEY, PartyId BIGINT NOT NULL)
DECLARE @PartyID BIGINT = 0
DECLARE @min INT, @max INT
-- ============================================================================
-- Get each valid PartyID
-- ============================================================================
INSERT #Party (PartyId)
SELECT DISTINCT Val
FROM dbo.dba_fn_SplitList(@PartyIDList,',')
WHERE Val <> '' AND
Val NOT LIKE '%[^0-9]%'
SELECT @min = MIN(RID), @max = MAX(RID) FROM #Party
WHILE (@min <= @max)
BEGIN
SELECT TOP 1 @partyID = PartyID
FROM #Party P
WHERE P.RID = @min
-- ============================================================================
-- Update Existing PartyIds for State
-- ============================================================================
UPDATE PL
SET LicenseExpirationDate = DATEADD(DAY,DATEDIFF(DAY,0,GETDATE())+360,0),
ModifiedBy = 0,
ModifiedDate = GETDATE()
FROM QAdmin.PartyLicenseInfo PL
WHERE PL.PartyID = @PartyID AND
PL.State = 'SC'
-- ============================================================================
-- Insert Non-Existing for State
-- ============================================================================
INSERT QAdmin.PartyLicenseInfo (PartyId, [State], LicenseNumber, LicenseExpirationDate, CreatedBy, CreatedDate, ModifiedBy, ModifiedDate)
SELECT @PartyId,
State='SC',
LicenseNumber = 'SC1234',
LicenseExpirationDate = DATEADD(DAY,DATEDIFF(DAY,0,GETDATE())+360,0),
CreatedBy = 0,
CreatedDate = GETDATE(),
ModifiedBy = NULL,
ModifiedDate = NULL
WHERE NOT EXISTS (SELECT 1
FROM QAdmin.PartyLicenseInfo DST WITH (NOLOCK)
WHERE DST.PartyID = @PartyId AND
DST.State = 'SC')
SET @min = @min + 1
END
END TRY
BEGIN CATCH
SELECT ERROR_NUMBER() AS ErrorNumber,
ERROR_MESSAGE() AS ErrorMessage
END CATCH
GO
-- ==================================================
-- END!!
-- ==================================================