LO23QtyMatchRateTable.sql 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. IF OBJECT_ID ('dbo.LO23QtyMatchRateTable','V') IS NOT NULL DROP VIEW dbo.LO23QtyMatchRateTable
  2. GO
  3. CREATE VIEW dbo.LO23QtyMatchRateTable
  4. AS
  5. WITH RateTable AS (
  6. SELECT 1 AS ref, 0 AS MinAmt, 1000 AS MaxAmt, 1.0 AS ExpectedQty, 90 AS Rate UNION ALL
  7. SELECT 2, 1001, 2500, 1.5, 90 UNION ALL
  8. SELECT 3, 2501, 5000, 4.5, 90 UNION ALL
  9. SELECT 4, 5001, 7500, 4.5, 90 UNION ALL
  10. SELECT 5, 7501, 10000, 7.5, 90 UNION ALL
  11. SELECT 6, 10001, 25000, 9.0, 90 UNION ALL
  12. SELECT 7, 25001, 50000, 10.5, 90 UNION ALL
  13. SELECT 8, 50001, 99999999999, 10.5, 90
  14. ),
  15. ProjectSums AS (
  16. SELECT
  17. b.CompanyID,
  18. b.ProjectID,
  19. SUM(case when b.[type] = 'I' then b.CuryRevisedAmount else 0 end) AS TotalCuryRevisedAmount,
  20. SUM(CASE WHEN i.InventoryCD = 'L023' THEN b.Qty ELSE 0 END) AS L023Qty
  21. FROM PMBudget b
  22. LEFT JOIN InventoryItem i
  23. ON b.CompanyID = i.CompanyID AND b.InventoryID = i.InventoryID
  24. GROUP BY b.CompanyID, b.ProjectID
  25. ),
  26. Matched AS (
  27. SELECT
  28. ps.CompanyID,
  29. ps.ProjectID,
  30. ps.TotalCuryRevisedAmount,
  31. ps.L023Qty,
  32. rt.ExpectedQty
  33. FROM ProjectSums ps
  34. JOIN RateTable rt
  35. ON ps.TotalCuryRevisedAmount BETWEEN rt.MinAmt AND rt.MaxAmt
  36. )
  37. SELECT
  38. CompanyID,
  39. ProjectID,
  40. TotalCuryRevisedAmount,
  41. L023Qty,
  42. ExpectedQty,
  43. CASE
  44. WHEN L023Qty = ExpectedQty THEN 0
  45. ELSE 1
  46. END AS MismatchFlag
  47. FROM Matched