Tuesday, March 25, 2014

Issue in replacing Cursor

Thanks sqlsaga for reply, I have used a similar code with a table variable, the number of records inserted into target table through the cursor are about 1000 rows but when done through given query, about 4000 rows are getting returned . I think I am missing logic in the

IF EXISTS(
SELECT 1
FROM Targettbl T
WHERE T.CaseID = @sCaseID
OR (T.CaseID IS NULL
AND T.AccountNumber = @sAccountNumber
AND ISNULL(T.CaseNumber,@sCaseNumber) = @sCaseNumber))



My Query was :

Declare @TVL as Table
(
CaseID int
,LastUpdate datetime
,EntryDate datetime
,UserID varchar(30)
,[System] varchar(4)
,Prin varchar(4)
,Agent varchar(4)
,AccountNumber varchar(16)
,OpenDate datetime
,ExtStatus varchar(1)
,IntStatus varchar(1)
)



INSERT INTO @TVL
SELECT Distinct
S.CaseID, S.ECaRFileDate,S.EntryDate,S.UserID,S.System,S.Prin,S.Agent,
S.AccountNumber,S.OpenDate,substring(S.ExtStatus,1,1) as ExtStatus,S.IntStatus
FROM dbo.uvwView S
LEFT JOIN dbo.tbl1 A
ON S.AccountNumber = A.AccountNumber
LEFT JOIN dbo.tbl2 C
ON S.ECC = C.ECC
LEFT JOIN dbo.tbl3 T
ON S.Col1 = T.Col1 and
S.Col2 = T.Col2 and
S.Col3 = T.Col3
LEFT JOIN dbo.tbl3 D
ON S.Col4 = D.Col1


IF EXISTS(
SELECT Distinct 1
FROM TargetTbl TBLB
INNER JOIN @TVL TVL
ON TBLB.CaseID = TVL.CaseID
OR (TBLB.CaseID IS NULL
AND TBLB.AccountNumber = TVL.AccountNumber
AND ISNULL(TBLB.CaseNumber,TVL.CaseNumber) = TVL.CaseNumber))

BEGIN
UPDATE
END
ELSE
INSERT
END






Srikanth



No comments:

Post a Comment