Advertisement
Guest User

Untitled

a guest
Jul 25th, 2016
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.61 KB | None | 0 0
  1. DECLARE @Mid Int;
  2. DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20));
  3. DECLARE @Name Varchar(50);
  4. SET @Name = (Select Name from D_Master where ID = @Mid);
  5.  
  6. DECLARE @watt int;
  7. SET @watt = 230;
  8.  
  9. DECLARE @Interval Int;
  10. SET @Interval = 15;
  11.  
  12. DECLARE @StartDate DateTime,@EndDate DateTime;
  13.  
  14. SET @StartDate = (select CreatedDate from dbo.D_Master where ID=@Mid);
  15. SET @EndDate = select MAX(StartTime) from Data;
  16.  
  17. DECLARE @ProcessingStartDate TABLE(
  18. P_Id bigint NOT NULL,
  19. S_Id bigint NOT NULL,
  20. SDate DateTime
  21. );
  22. INSERT INTO @ProcessingStartDate (P_Id, S_Id, SDate)
  23. select P_Id,S_Id, MAX(StartDate) as SDate from hourdata where id = @Mid group by S_Id, P_Id;
  24.  
  25. DECLARE @ProcessingEndDate TABLE(
  26. P_Id bigint NOT NULL,
  27. S_Id bigint NOT NULL,
  28. SDate DateTime
  29. );
  30. INSERT INTO @ProcessingEndDate (P_Id, S_Id, SDate)
  31. select P_Id,S_Id, MAX(StartTime) as SDate from data where id = @Name group by S_Id, P_Id;
  32.  
  33. MERGE dbo.HourData AS T
  34.  
  35. USING (
  36. SELECT Id, S_Id, P_Id,SDate, SYear, SMonth, SDay, SHour, SUM(AvgOfIC) AS HourSumOfUse,
  37. dbo.GetPower(SUM(AvgOfIC),1,S_Id,P_Id,230,15) As Powers
  38.  
  39. FROM
  40. (
  41. SELECT Id, S_Id, P_Id,
  42. CONVERT(date,StartTime) AS SDate,
  43. YEAR(StartTime) AS SYear,
  44. MONTH(StartTime) AS SMonth,
  45. DAY(StartTime) AS SDay,
  46. DATEPART ("HH",StartTime) AS SHour,
  47. DATEPART ("Mi", StartTime) AS SMinute,
  48. CAST((DATEPART ("ss", StartTime)/15 + 1) as Int) AS 'Quater_Minute',
  49. Avg(IC) AS AvgOfIC
  50. FROM dbo.Data
  51. WHERE Id = @Mid
  52.  
  53. and StartTime >= ISNULL((select Max(StartDate) from hourdata
  54. where id = @Mid and S_Id = S_Id and P_Id = P_Id),@StartDate) and
  55.  
  56. StartTime <= ISNULL(( select MAX(StartTime) from data
  57. where id = @Name and S_Id = S_Id and P_Id = P_Id ),@EndDate )
  58.  
  59. GROUP BY Id, S_Id, P_Id,
  60. CONVERT(date, StartTime) ,
  61. YEAR(StartTime),
  62. MONTH(StartTime),
  63. DAY(StartTime),
  64. DATEPART ("HH",StartTime),
  65. DATEPART ("Mi", StartTime),
  66. CAST(DATEPART ("ss", StartTime)/15 + 1 as Int)
  67. ) As InnerTable
  68. GROUP BY Id, S_Id, P_Id, SDate,
  69. SYear,
  70. SMonth,
  71. SDay,
  72. SHour ) AS S
  73. --SDate add date
  74. ON (T.Id = @Mid and T.S_Id = S.S_Id and T.P_Id = S.P_Id and
  75. CONVERT(date, T.StartDate) = CONVERT(date, SDate) and T.HourShow = S.SHour)
  76. WHEN NOT MATCHED BY TARGET
  77. THEN INSERT(Id, S_Id, P_Id, Powers, HourShow, StartDate) VALUES(@Mid, S.S_Id, S.P_Id,HourSumOfUse, S.SHour,
  78. DATEADD(day, DATEDIFF(day, 0, S.SDate), Convert(Varchar(8),S.SHour) + ':00:00'))
  79. WHEN MATCHED
  80. THEN UPDATE SET T.HourShow = S.SHour , Powers = HourSumOfUse
  81. OUTPUT $action INTO @SummaryOfChanges;
  82.  
  83. SELECT Change, COUNT(*) AS CountPerChange FROM @SummaryOfChanges
  84. GROUP BY Change;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement