Advertisement
Guest User

Untitled

a guest
Apr 17th, 2014
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.00 KB | None | 0 0
  1. -- =============================================
  2. -- Author: Исхаков Тимур
  3. -- Create date: 26.02.2009
  4. -- Description: Заполняет таблицу периодов на указанные годы
  5. -- =============================================
  6. TRUNCATE TABLE [dbo].[Periods]
  7.  
  8. declare @startDate datetime
  9. declare @endDate datetime
  10.  
  11. set @startDate = '2013-08-05 00:00:00.000'
  12. set @endDate = '2013-09-04 23:59:59.000'
  13.  
  14. BEGIN
  15.  
  16. DECLARE @i INT
  17. DECLARE @week_count INT
  18. DECLARE @decade_count INT
  19. DECLARE @time VARCHAR(9)
  20.  
  21. SET @time = ' 23:59:59'
  22.  
  23.  
  24.  
  25. INSERT INTO periods
  26. ( PeriodName ,
  27. PeriodFullName ,
  28. PeriodTypeID ,
  29. PeriodYear ,
  30. PeriodSortNum
  31. )
  32. VALUES ( 'Year' ,
  33. Year(@startDate) ,
  34. 1 ,
  35. Year(@startDate) ,
  36. Year(@startDate)
  37. )
  38.  
  39. INSERT INTO periods
  40. ( PeriodName ,
  41. PeriodFullName ,
  42. PeriodTypeID ,
  43. PeriodYear ,
  44. PeriodQuarter ,
  45. PeriodSortNum
  46. )
  47. VALUES ( '1 квартал' ,
  48. STR(Year(@startDate), 4) + ' 1 квартал' ,
  49. 3 ,
  50. Year(@startDate) ,
  51. 1 ,
  52. 1
  53. )
  54.  
  55. INSERT INTO periods
  56. ( PeriodName ,
  57. PeriodFullName ,
  58. PeriodTypeID ,
  59. PeriodYear ,
  60. PeriodQuarter ,
  61. PeriodSortNum
  62. )
  63. VALUES ( '2 квартал' ,
  64. STR(Year(DATEADD(quarter, 1, @startDate)), 4) + ' 2 квартал' ,
  65. 3 ,
  66. Year(DATEADD(quarter, 1, @startDate)) ,
  67. 2 ,
  68. 2
  69. )
  70.  
  71. INSERT INTO periods
  72. ( PeriodName ,
  73. PeriodFullName ,
  74. PeriodTypeID ,
  75. PeriodYear ,
  76. PeriodQuarter ,
  77. PeriodSortNum
  78. )
  79. VALUES ( '3 квартал' ,
  80. STR(Year(DATEADD(quarter, 2, @startDate)), 4) + ' 3 квартал' ,
  81. 3 ,
  82. Year(DATEADD(quarter, 2, @startDate)) ,
  83. 3 ,
  84. 3
  85. )
  86.  
  87. INSERT INTO periods
  88. ( PeriodName ,
  89. PeriodFullName ,
  90. PeriodTypeID ,
  91. PeriodYear ,
  92. PeriodQuarter ,
  93. PeriodSortNum
  94. )
  95. VALUES ( '4 квартал' ,
  96. STR(Year(DATEADD(quarter, 3, @startDate)), 4) + ' 4 квартал' ,
  97. 3 ,
  98. Year(DATEADD(quarter, 3, @startDate)) ,
  99. 4 ,
  100. 4
  101. )
  102.  
  103.  
  104. UPDATE Periods
  105. SET DateBegin = @startDate,
  106. DateEnd = @endDate
  107. WHERE PeriodTypeId = 1
  108.  
  109. -- если период целый год
  110. UPDATE Periods
  111. SET DateBegin = @startDate,
  112. DateEnd = dbo.AddQuarter(@startDate)
  113. WHERE PeriodTypeId = 3 AND PeriodQuarter = 1 AND dbo.AddQuarter(@startDate) <= @endDate
  114.  
  115. UPDATE Periods
  116. SET DateBegin = DATEADD(quarter, 1, @startDate),
  117. DateEnd = dbo.AddQuarter(DATEADD(quarter, 1, @startDate))
  118. WHERE PeriodTypeId = 3 AND PeriodQuarter = 2 AND dbo.AddQuarter(DATEADD(quarter, 1, @startDate)) <= @endDate
  119.  
  120. UPDATE Periods
  121. SET DateBegin = DATEADD(quarter, 2, @startDate),
  122. DateEnd = dbo.AddQuarter(DATEADD(quarter, 2, @startDate))
  123. WHERE PeriodTypeId = 3 AND PeriodQuarter = 3 AND dbo.AddQuarter(DATEADD(quarter, 2, @startDate)) <= @endDate
  124.  
  125. UPDATE Periods
  126. SET DateBegin = DATEADD(quarter, 3, @startDate),
  127. DateEnd = dbo.AddQuarter(DATEADD(quarter, 3, @startDate))
  128. WHERE PeriodTypeId = 3 AND PeriodQuarter = 4 AND dbo.AddQuarter(DATEADD(quarter, 3, @startDate)) <= @endDate
  129.  
  130. -- если период не целый год
  131. UPDATE Periods
  132. SET DateBegin = @startDate,
  133. DateEnd = @endDate
  134. WHERE PeriodTypeId = 3 AND PeriodQuarter = 1 AND dbo.AddQuarter(@startDate) > @endDate
  135.  
  136. UPDATE Periods
  137. SET DateBegin = CASE WHEN DATEADD(quarter, 1, @startDate) > @endDate THEN @endDate ELSE dbo.AddQuarter(@startDate) END,
  138. DateEnd = CASE WHEN dbo.AddQuarter(DATEADD(quarter, 1, @startDate)) > @endDate THEN @endDate ELSE dbo.AddQuarter(DATEADD(quarter, 1, @startDate)) END
  139. WHERE PeriodTypeId = 3 AND PeriodQuarter = 2 AND dbo.AddQuarter(DATEADD(quarter, 1, @startDate)) > @endDate
  140.  
  141. UPDATE Periods
  142. SET DateBegin = CASE WHEN DATEADD(quarter, 2, @startDate) > @endDate THEN @endDate ELSE dbo.AddQuarter(DATEADD(quarter, 1, @startDate)) END,
  143. DateEnd = CASE WHEN dbo.AddQuarter(DATEADD(quarter, 2, @startDate)) > @endDate THEN @endDate ELSE dbo.AddQuarter(DATEADD(quarter, 2, @startDate)) END
  144. WHERE PeriodTypeId = 3 AND PeriodQuarter = 3 AND dbo.AddQuarter(DATEADD(quarter, 2, @startDate)) > @endDate
  145.  
  146. UPDATE Periods
  147. SET DateBegin = CASE WHEN DATEADD(quarter, 3, @startDate) > @endDate THEN @endDate ELSE dbo.AddQuarter(DATEADD(quarter, 2, @startDate)) END,
  148. DateEnd = CASE WHEN dbo.AddQuarter(DATEADD(quarter, 3, @startDate)) > @endDate THEN @endDate ELSE dbo.AddQuarter(DATEADD(quarter, 3, @startDate)) END
  149. WHERE PeriodTypeId = 3 AND PeriodQuarter = 4 AND dbo.AddQuarter(DATEADD(quarter, 3, @startDate)) > @endDate
  150. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement