Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE TABLE #OVERPAY(OID INT, USERID CHAR(1), Rest INT)
- CREATE TABLE #OPEN(IID INT, USERID CHAR(1), Amt INT, OpenROW INT)
- INSERT INTO #OVERPAY(OID, USERID, Rest)
- VALUES (1,'A',10),
- (2,'A',15),
- (3,'F',5),
- (4,'H',20),
- (5,'H',5)
- INSERT INTO #OPEN(IID, USERID, Amt, OpenROW)
- VALUES (1, 'A', 10, 1),
- (2, 'A', 10, 2),
- (3, 'A', 15, 3),
- (4, 'F', 5, 1),
- (5, 'H', 15, 1),
- (6, 'H', 10, 2),
- (7, 'P', 33, 1)
- CURSOR
- CREATE TABLE #map (OID INT, IID INT)
- CREATE TABLE #usedIID(IID INT)
- DECLARE @OID INT, @USERID CHAR(1), @Rest INT
- DECLARE ov_cursor CURSOR FOR
- SELECT OID, USERID, REST
- FROM #OVERPAY
- OPEN ov_cursor
- FETCH NEXT FROM ov_cursor INTO @OID, @USERID, @REST
- WHILE @@FETCH_STATUS = 0
- BEGIN
- DECLARE @IID INT
- INSERT INTO #map (OID, IID)
- OUTPUT inserted.IID INTO #usedIID (IID)
- SELECT TOP 1 @OID, o.IID
- FROM #OPEN o
- LEFT JOIN #usedIID u ON u.IID = o.IID
- WHERE o.USERID = @USERID AND o.Amt <= @REST AND u.IID IS NULL
- FETCH NEXT FROM ov_cursor INTO @OID, @USERID, @REST
- END
- CLOSE ov_cursor
- DEALLOCATE ov_cursor
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement