Advertisement
Guest User

Untitled

a guest
Oct 9th, 2015
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.44 KB | None | 0 0
  1. BEGIN
  2. SET NOCOUNT ON;
  3. SELECT DISTINCT
  4. ISNULL(T.PRODUCT_ID, 'NULL') AS [Commodity],
  5. ISNULL(T.PO_NO, 'NULL') AS [PO NO],
  6. ISNULL(T.LINE_NO, 'NULL') AS [LINE NO],
  7. QUOTENAME(T.DESCRIPTION, '"') AS [PO Line Description],
  8. QUOTENAME(C.DESCRIPTION, '"') AS [Commodity Description],
  9. ISNULL(T.FY, 'NULL') AS [Fiscal Year],
  10. PH.Vendor_ID AS [Vendor ID],
  11. QUOTENAME (V.Vendor_Name, '"') AS [Vendor Name],
  12. T.QUANTITY,
  13. T.UNIT_COST,
  14. T.QUANTITY*T.UNIT_COST AS [Line Amount],
  15. T.Created_Date,
  16. (Select CAST(0.00 as numeric(10,2))) AS Sub_Total_Cost -- = 0
  17. INTO ##TmpPOReport
  18. FROM dbo.FI_REQ_PO_ITEMS T
  19. INNER JOIN dbo.FI_VENDOR FV ON T.INST_ID=FV.INST_ID
  20. INNER JOIN dbo.FI_REQ_PO_HEADER PH ON T.PO_NO=PH.PO_NO
  21. INNER JOIN dbo.FI_VENDOR V ON PH.VENDOR_ID=V.VENDOR_ID
  22. INNER JOIN dbo.FI_COMMODITY C ON T.PRODUCT_ID=C.FI_COMMODITY_CODE
  23.  
  24. WHERE T.INST_ID = 'SC00' AND
  25. T.FY = '2015' AND
  26. V.VENDOR_TYPE = 'V' AND
  27. T.PO_NO IS NOT NULL AND
  28. (T.PRODUCT_ID <> '' AND T.PRODUCT_ID IS NOT NULL)
  29. AND T.QUANTITY*T.UNIT_COST BETWEEN '1000' AND '20000'
  30. Order By Commodity
  31.  
  32. DECLARE @PID varchar(15)=00,
  33. @QUANTITY int,
  34. @UNIT_COST numeric(10,2),
  35. @PrevID varchar(15),
  36. @CreateDate datetime,
  37. @PrevDate datetime = getdate(),
  38. @RowAmount numeric(10,2),
  39. @SubTotal numeric(10,2) = 0.00
  40.  
  41. SET NUMERIC_ROUNDABORT OFF;
  42.  
  43. WHILE EXISTS(Select TOP 1 * FROM ##TmpPOReport WHERE Sub_Total_Cost = 0.00)
  44. BEGIN
  45. SET @RowAmount = (Select TOP 1 (QUANTITY * UNIT_COST) FROM ##TmpPOReport WHERE Sub_Total_Cost = 0.00)
  46.  
  47. SELECT TOP 1 @PID = Commodity, @CreateDate = Created_Date FROM ##TmpPOReport WHERE Sub_Total_Cost = 0.00
  48. IF(@PID = @PrevID)AND(@CreateDate <> @PrevDate)
  49. BEGIN
  50. SET @SubTotal += @RowAmount;
  51. UPDATE T SET Sub_Total_Cost = @SubTotal FROM ##TmpPOReport T WHERE T.Commodity = @PID AND T.Created_Date = @CreateDate
  52. SET @PrevID = @PID;
  53. SET @PrevDate = @CreateDate
  54. END
  55. ELSE
  56. BEGIN
  57. SET @SubTotal = @RowAmount;
  58. UPDATE T SET Sub_Total_Cost = @SubTotal FROM ##TmpPOReport T WHERE T.Commodity = @PID AND T.Created_Date = @CreateDate
  59. SET @PrevID = @PID;
  60. SET @PrevDate = @CreateDate
  61. END
  62.  
  63. END
  64.  
  65. SET NUMERIC_ROUNDABORT ON;
  66. SELECT * FROM ##TmpPOReport
  67. WHERE [Line Amount] BETWEEN '1000' AND '20000'
  68. DROP TABLE ##TmpPOReport
  69. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement