ProjectDataAccuracy.sql 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. DROP VIEW IF EXISTS ProjectDataAccuracy
  2. GO
  3. Create View ProjectDataAccuracy
  4. as
  5. with FirstLayer
  6. as
  7. (
  8. SELECT c.CompanyID,
  9. c.ContractID,
  10. c.ContractCD,
  11. dbo.ProjectRental(c.CompanyID, c.ContractID) as RentalProject,
  12. ISNULL(CAST(dbo.GetContractUserDefinedField(c.CompanyID, c.NoteID, 'AttributeNTE', 1) AS DECIMAL(18, 2)), 0) as NTE,
  13. ISNULL(CAST(dbo.GetContractUserDefinedField(c.CompanyID, c.NoteID, 'AttributeVNTE', 1) AS DECIMAL(18, 2)), 0) as VNTE,
  14. dbo.GetContractUserDefinedField(c.CompanyID, c.NoteID, 'AttributeNTE', 0 ) as NTEAsText,
  15. dbo.GetContractUserDefinedField(c.CompanyID, c.NoteID, 'AttributeVNTE', 0 ) as VNTEAsText,
  16. ISNULL(b.RevisedExpenseBudgetSum,0) as RevisedExpenseBudgetSum,
  17. ISNULL(b.RevisedIncomeBudgetSum,0) as RevisedIncomeBudgetSum,
  18. ISNULL(b.ActualExpenseAmount,0) as ActualExpenseAmount,
  19. case when b.RevisedExpenseBudgetSum < 5 then 1 else 0 end as RevisedUnderFive,
  20. case when b.ActualExpenseAmount > b.RevisedExpenseBudgetSum then 1 else 0 end as ActualExpenseOverBudget,
  21. case when b.ActualExpenseAmount > b.RevisedIncomeBudgetSum then 1 else 0 end as ExpenseExceedsIncome,
  22. CASE
  23. WHEN b.RevisedIncomeBudgetSum + ISNULL(CAST(dbo.GetContractUserDefinedField(c.CompanyID, c.NoteID, 'AttributeNTE', 1) AS DECIMAL(18, 2)), 0) < 5
  24. THEN 1
  25. ELSE 0
  26. END AS BudgetIncomeAndNTEUnderFive,
  27. CASE
  28. WHEN ISNULL(CAST(dbo.GetContractUserDefinedField(c.CompanyID, c.NoteID, 'AttributeNTE', 1) AS DECIMAL(18, 2)), 0) < 5
  29. AND b.RevisedIncomeBudgetSum > 0
  30. THEN 1
  31. ELSE 0
  32. END AS NTEUnderFiveWithBudget,
  33. CASE
  34. WHEN b.RevisedIncomeBudgetSum < 5
  35. AND ISNULL(CAST(dbo.GetContractUserDefinedField(c.CompanyID, c.NoteID, 'AttributeNTE', 1) AS DECIMAL(18, 2)), 0) > 0
  36. THEN 1
  37. ELSE 0
  38. END AS BudgetUnderFiveWithNTE,
  39. ISNULL(b.RevisedIncomeBudgetSum,0) - ISNULL(RevisedExpenseBudgetSum,0) as EstimatedMargin,
  40. ((ISNULL(b.RevisedIncomeBudgetSum, 0) - ISNULL(b.RevisedExpenseBudgetSum, 0)) / NULLIF(ISNULL(b.RevisedIncomeBudgetSum, 0), 0)) * 100 AS GrossMargin
  41. from Contract c
  42. left join PMBudgetTotals b on c.CompanyID = b.CompanyID and c.ContractID = b.ProjectID
  43. )
  44. SELECT fl.*,
  45. case when fl.GrossMargin < 0 then 1 else 0 end as BudgetedGMUnderZero,
  46. case when fl.GrossMargin < 8 then 1 else 0 end as BudgetedGMunderEight,
  47. case when fl.GrossMargin < 4.5 then 1 else 0 end as BudgetedGMUnderFourFive,
  48. case when fl.RentalProject = 1 and fl.GrossMargin < 4.5 then 1
  49. when fl.RentalProject = 0 and fl.GrossMargin < 8.0 then 1
  50. else 0 end as BudgetedGMUnderTargetCombined,
  51. case when fl.RevisedIncomeBudgetSum > IsNull(fl.NTE,0) then 1 else 0 end as BudgetedIncomeOverNTE
  52. from FirstLayer fl