| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- IF OBJECT_ID ('dbo.LO23QtyMatchRateTable','V') IS NOT NULL DROP VIEW dbo.LO23QtyMatchRateTable
- GO
- CREATE VIEW dbo.LO23QtyMatchRateTable
- AS
- WITH RateTable AS (
- SELECT 1 AS ref, 0 AS MinAmt, 1000 AS MaxAmt, 1.0 AS ExpectedQty, 90 AS Rate UNION ALL
- SELECT 2, 1001, 2500, 1.5, 90 UNION ALL
- SELECT 3, 2501, 5000, 4.5, 90 UNION ALL
- SELECT 4, 5001, 7500, 4.5, 90 UNION ALL
- SELECT 5, 7501, 10000, 7.5, 90 UNION ALL
- SELECT 6, 10001, 25000, 9.0, 90 UNION ALL
- SELECT 7, 25001, 50000, 10.5, 90 UNION ALL
- SELECT 8, 50001, 99999999999, 10.5, 90
- ),
- ProjectSums AS (
- SELECT
- b.CompanyID,
- b.ProjectID,
- SUM(case when b.[type] = 'I' then b.CuryRevisedAmount else 0 end) AS TotalCuryRevisedAmount,
- SUM(CASE WHEN i.InventoryCD = 'L023' THEN b.Qty ELSE 0 END) AS L023Qty
- FROM PMBudget b
- LEFT JOIN InventoryItem i
- ON b.CompanyID = i.CompanyID AND b.InventoryID = i.InventoryID
- GROUP BY b.CompanyID, b.ProjectID
- ),
- Matched AS (
- SELECT
- ps.CompanyID,
- ps.ProjectID,
- ps.TotalCuryRevisedAmount,
- ps.L023Qty,
- rt.ExpectedQty
- FROM ProjectSums ps
- JOIN RateTable rt
- ON ps.TotalCuryRevisedAmount BETWEEN rt.MinAmt AND rt.MaxAmt
- )
- SELECT
- CompanyID,
- ProjectID,
- TotalCuryRevisedAmount,
- L023Qty,
- ExpectedQty,
- CASE
- WHEN L023Qty = ExpectedQty THEN 0
- ELSE 1
- END AS MismatchFlag
- FROM Matched
|