Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.03 KB | None | 0 0
  1. CREATE TABLE #OVERPAY(OID INT, USERID CHAR(1), Rest INT)
  2. CREATE TABLE #OPEN(IID INT, USERID CHAR(1), Amt INT, OpenROW INT)
  3.  
  4. INSERT INTO #OVERPAY(OID, USERID, Rest)
  5. VALUES (1,'A',10),
  6. (2,'A',15),
  7. (3,'F',5),
  8. (4,'H',20),
  9. (5,'H',5)
  10.  
  11. INSERT INTO #OPEN(IID, USERID, Amt, OpenROW)
  12. VALUES (1, 'A', 10, 1),
  13. (2, 'A', 10, 2),
  14. (3, 'A', 15, 3),
  15. (4, 'F', 5, 1),
  16. (5, 'H', 15, 1),
  17. (6, 'H', 10, 2),
  18. (7, 'P', 33, 1)
  19.  
  20. CURSOR
  21.  
  22. CREATE TABLE #map (OID INT, IID INT)
  23. CREATE TABLE #usedIID(IID INT)
  24. DECLARE @OID INT, @USERID CHAR(1), @Rest INT
  25. DECLARE ov_cursor CURSOR FOR
  26. SELECT OID, USERID, REST
  27. FROM #OVERPAY
  28.  
  29. OPEN ov_cursor
  30. FETCH NEXT FROM ov_cursor INTO @OID, @USERID, @REST
  31.  
  32. WHILE @@FETCH_STATUS = 0
  33. BEGIN
  34. DECLARE @IID INT
  35.  
  36. INSERT INTO #map (OID, IID)
  37. OUTPUT inserted.IID INTO #usedIID (IID)
  38. SELECT TOP 1 @OID, o.IID
  39. FROM #OPEN o
  40. LEFT JOIN #usedIID u ON u.IID = o.IID
  41. WHERE o.USERID = @USERID AND o.Amt <= @REST AND u.IID IS NULL
  42.  
  43. FETCH NEXT FROM ov_cursor INTO @OID, @USERID, @REST
  44. END
  45.  
  46. CLOSE ov_cursor
  47. DEALLOCATE ov_cursor
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement