kalender.Kalender_Dimension.sql 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. SET QUOTED_IDENTIFIER ON
  2. GO
  3. SET ANSI_NULLS ON
  4. GO
  5. CREATE VIEW [kalender].[Kalender_Dimension] AS
  6. WITH
  7. [Zeit_Dimension_mit_Text]
  8. AS (SELECT [Datum]
  9. , [Tag_im_Jahr]
  10. , [Wochentag]
  11. , [Wochentag_int]
  12. , [Periode]
  13. , [Kalenderwoche]
  14. , [Quartal_int]
  15. , [Datum_str]
  16. , [Datum_int]
  17. , [MoFr]
  18. , [MoSa]
  19. , [Jahr]
  20. , [Quartal]
  21. , [Monat]
  22. , [Tag]
  23. , [Heute]
  24. , [Heute_Vorjahr]
  25. , [Heute_Vormonat]
  26. , iif([Aktueller Tag] = 1, [Tag], NULL) AS [Aktueller Tag]
  27. , iif([Gestern] = 1, [Tag], NULL) AS [Gestern]
  28. , iif([M bisher] = 1, [Tag], NULL) AS [M bisher]
  29. , iif([M bisher Vorjahr] = 1, [Tag], NULL) AS [M bisher Vorjahr]
  30. , convert(varchar(30), CASE WHEN [M bisher / M bisher VJ] = 1 THEN 'M bisher' WHEN [M bisher / M bisher VJ] = 2 THEN 'M bisher VJ' ELSE NULL END) AS [M bisher / M bisher VJ]
  31. , iif([Voriger M bisher] = 1, [Tag], NULL) AS [Voriger M bisher]
  32. , convert(varchar(30), CASE WHEN [M bisher gruppiert] = 1 THEN 'M bisher' WHEN [M bisher gruppiert] = 2 THEN 'Voriger M bisher' ELSE NULL END) AS [M bisher gruppiert]
  33. , iif([Q bisher] = 1, [Quartal], NULL) AS [Q bisher]
  34. , iif([Voriges Q bisher] = 1, [Quartal], NULL) AS [Voriges Q bisher]
  35. , convert(varchar(30), CASE WHEN [Q bisher gruppiert] = 1 THEN 'Q bisher' WHEN [Q bisher gruppiert] = 2 THEN 'Voriges Q bisher' ELSE NULL END) AS [Q bisher gruppiert]
  36. , iif([J bisher] = 1, [Quartal], NULL) AS [J bisher]
  37. , iif([Voriges J bisher] = 1, [Quartal], NULL) AS [Voriges J bisher]
  38. , convert(varchar(30), CASE WHEN [J bisher gruppiert] = 1 THEN 'J bisher' WHEN [J bisher gruppiert] = 2 THEN 'Voriges J bisher' ELSE NULL END) AS [J bisher gruppiert]
  39. , iif([Aktueller Monat] = 1, [Monat], NULL) AS [Aktueller Monat]
  40. , iif([Vormonat (-1)] = 1, [Monat], NULL) AS [Vormonat (-1)]
  41. , iif([Vormonat (-2)] = 1, [Monat], NULL) AS [Vormonat (-2)]
  42. , iif([Vormonat (-3)] = 1, [Monat], NULL) AS [Vormonat (-3)]
  43. , iif([Akt. Monat Vorjahr] = 1, [Monat], NULL) AS [Akt. Monat Vorjahr]
  44. , iif([Vormonat (-1) Vorjahr] = 1, [Monat], NULL) AS [Vormonat (-1) Vorjahr]
  45. , iif([Vormonat (-2) Vorjahr] = 1, [Monat], NULL) AS [Vormonat (-2) Vorjahr]
  46. , iif([Vormonat (-3) Vorjahr] = 1, [Monat], NULL) AS [Vormonat (-3) Vorjahr]
  47. , iif([letzte 6 Monate] = 1, [Monat], NULL) AS [letzte 6 Monate]
  48. , iif([letzte 12 Monate] = 1, [Monat], NULL) AS [letzte 12 Monate]
  49. , iif([per Vormonat] = 1, [Quartal], NULL) AS [per Vormonat]
  50. , iif([per Vormonat (-2)] = 1, [Quartal], NULL) AS [per Vormonat (-2)]
  51. , iif([per Vormonat (-3)] = 1, [Quartal], NULL) AS [per Vormonat (-3)]
  52. , iif([per Vormonat Vorjahr] = 1, [Quartal], NULL) AS [per Vormonat Vorjahr]
  53. , iif([per Vormonat (-2) Vorjahr] = 1, [Quartal], NULL) AS [per Vormonat (-2) Vorjahr]
  54. , iif([per Vormonat (-3) Vorjahr] = 1, [Quartal], NULL) AS [per Vormonat (-3) Vorjahr]
  55. , iif([Aktuelles Jahr] = 1, [Jahr], NULL) AS [Aktuelles Jahr]
  56. , iif([letztes Jahr] = 1, [Jahr], NULL) AS [letztes Jahr]
  57. , iif([3 Monate bis Vormonat (-2)] = 1, [Monat], NULL) AS [3 Monate bis Vormonat (-2)]
  58. , iif([Quartal (-1)] = 1, [Quartal], NULL) AS [Quartal (-1)]
  59. , iif([Quartal (-2)] = 1, [Quartal], NULL) AS [Quartal (-2)]
  60. , iif([Quartal (-3)] = 1, [Quartal], NULL) AS [Quartal (-3)]
  61. , iif([Quartal (-1) Vorjahr] = 1, [Quartal], NULL) AS [Quartal (-1) Vorjahr]
  62. , iif([Quartal (-2) Vorjahr] = 1, [Quartal], NULL) AS [Quartal (-2) Vorjahr]
  63. , iif([Quartal (-3) Vorjahr] = 1, [Quartal], NULL) AS [Quartal (-3) Vorjahr]
  64. , iif([Quartal (-1) kum.] = 1, [Quartal], NULL) AS [Quartal (-1) kum.]
  65. , iif([Quartal (-1) kum. Vorjahr] = 1, [Quartal], NULL) AS [Quartal (-1) kum. Vorjahr]
  66. , iif([letzte 11 Monate] = 1, [Monat], NULL) AS [letzte 11 Monate]
  67. , iif([letzte 13 Monate] = 1, [Monat], NULL) AS [letzte 13 Monate]
  68. , iif([letzte 3 Tage] = 1, [Tag], NULL) AS [letzte 3 Tage]
  69. , iif([letzte 7 Tage] = 1, [Tag], NULL) AS [letzte 7 Tage]
  70. , iif([letzte 14 Tage] = 1, [Tag], NULL) AS [letzte 14 Tage]
  71. , iif([letzte 30 Tage] = 1, [Tag], NULL) AS [letzte 30 Tage]
  72. FROM [kalender].[Kalender_Matrix])
  73. , [Zeit_Pivot]
  74. AS (SELECT [Datum], [Zeit_Spezialkategorie], [Zeit_Ebene1]
  75. FROM (SELECT [Datum]
  76. , [Aktueller Tag]
  77. , [Gestern]
  78. , [M bisher]
  79. , [M bisher Vorjahr]
  80. , [M bisher / M bisher VJ]
  81. , [Voriger M bisher]
  82. , [M bisher gruppiert]
  83. , [Q bisher]
  84. , [Voriges Q bisher]
  85. , [Q bisher gruppiert]
  86. , [J bisher]
  87. , [Voriges J bisher]
  88. , [J bisher gruppiert]
  89. , [Aktueller Monat]
  90. , [Vormonat (-1)]
  91. , [Vormonat (-2)]
  92. , [Vormonat (-3)]
  93. , [Akt. Monat Vorjahr]
  94. , [Vormonat (-1) Vorjahr]
  95. , [Vormonat (-2) Vorjahr]
  96. , [Vormonat (-3) Vorjahr]
  97. , [letzte 6 Monate]
  98. , [letzte 12 Monate]
  99. , [per Vormonat]
  100. , [per Vormonat (-2)]
  101. , [per Vormonat (-3)]
  102. , [per Vormonat Vorjahr]
  103. , [per Vormonat (-2) Vorjahr]
  104. , [per Vormonat (-3) Vorjahr]
  105. , [Aktuelles Jahr]
  106. , [letztes Jahr]
  107. , [3 Monate bis Vormonat (-2)]
  108. , [Quartal (-1)]
  109. , [Quartal (-2)]
  110. , [Quartal (-3)]
  111. , [Quartal (-1) Vorjahr]
  112. , [Quartal (-2) Vorjahr]
  113. , [Quartal (-3) Vorjahr]
  114. , [Quartal (-1) kum.]
  115. , [Quartal (-1) kum. Vorjahr]
  116. , [letzte 11 Monate]
  117. , [letzte 13 Monate]
  118. , [letzte 3 Tage]
  119. , [letzte 7 Tage]
  120. , [letzte 14 Tage]
  121. , [letzte 30 Tage]
  122. FROM [Zeit_Dimension_mit_Text]) [p]
  123. UNPIVOT
  124. ([Zeit_Ebene1] FOR [Zeit_Spezialkategorie] IN
  125. ([Aktueller Tag]
  126. ,[Gestern]
  127. ,[M bisher]
  128. ,[M bisher Vorjahr]
  129. ,[M bisher / M bisher VJ]
  130. ,[Voriger M bisher]
  131. ,[M bisher gruppiert]
  132. ,[Q bisher]
  133. ,[Voriges Q bisher]
  134. ,[Q bisher gruppiert]
  135. ,[J bisher]
  136. ,[Voriges J bisher]
  137. ,[J bisher gruppiert]
  138. ,[Aktueller Monat]
  139. ,[Vormonat (-1)]
  140. ,[Vormonat (-2)]
  141. ,[Vormonat (-3)]
  142. ,[Akt. Monat Vorjahr]
  143. ,[Vormonat (-1) Vorjahr]
  144. ,[Vormonat (-2) Vorjahr]
  145. ,[Vormonat (-3) Vorjahr]
  146. ,[letzte 6 Monate]
  147. ,[letzte 12 Monate]
  148. ,[per Vormonat]
  149. ,[per Vormonat (-2)]
  150. ,[per Vormonat (-3)]
  151. ,[per Vormonat Vorjahr]
  152. ,[per Vormonat (-2) Vorjahr]
  153. ,[per Vormonat (-3) Vorjahr]
  154. ,[Aktuelles Jahr]
  155. ,[letztes Jahr]
  156. ,[3 Monate bis Vormonat (-2)]
  157. ,[Quartal (-1)]
  158. ,[Quartal (-2)]
  159. ,[Quartal (-3)]
  160. ,[Quartal (-1) Vorjahr]
  161. ,[Quartal (-2) Vorjahr]
  162. ,[Quartal (-3) Vorjahr]
  163. ,[Quartal (-1) kum.]
  164. ,[Quartal (-1) kum. Vorjahr]
  165. ,[letzte 11 Monate]
  166. ,[letzte 13 Monate]
  167. , [letzte 3 Tage]
  168. , [letzte 7 Tage]
  169. , [letzte 14 Tage]
  170. , [letzte 30 Tage])
  171. ) AS [unpvt]
  172. WHERE [Zeit_Ebene1] IS NOT NULL)
  173. , [Zeit_Pivot_fuer_Datum]
  174. AS (SELECT [T1].[Datum]
  175. , [T2].[Jahr]
  176. , [T2].[Quartal]
  177. , [T2].[Monat]
  178. , [T2].[Tag]
  179. , [T1].[Zeit_Spezialkategorie]
  180. , [T1].[Zeit_Ebene1]
  181. FROM [Zeit_Pivot] [T1]
  182. INNER JOIN [kalender].[Kalender_Tage] [T2] ON [T1].[Datum] = [T2].[Datum])
  183. , [Zeit_Spezial_Ebene2]
  184. AS (SELECT [Datum]
  185. , [Jahr]
  186. , [Quartal]
  187. , [Monat]
  188. , [Tag]
  189. , [Zeit_Spezialkategorie]
  190. , [Zeit_Ebene1]
  191. , CASE
  192. WHEN [Zeit_Ebene1] = [Jahr] THEN [Quartal]
  193. WHEN [Zeit_Ebene1] = [Quartal] THEN [Monat]
  194. WHEN [Zeit_Ebene1] = [Monat] THEN [Tag]
  195. WHEN [Zeit_Spezialkategorie] IN ('J bisher gruppiert') THEN [Quartal]
  196. WHEN [Zeit_Spezialkategorie] IN ('Q bisher gruppiert') THEN [Monat]
  197. WHEN [Zeit_Spezialkategorie] IN ('M bisher / M bisher VJ', 'M bisher gruppiert') THEN [Tag]
  198. END AS [Zeit_Ebene2]
  199. FROM [Zeit_Pivot_fuer_Datum])
  200. , [Zeit_Spezial_Ebene3]
  201. AS (SELECT [Datum]
  202. , [Jahr]
  203. , [Quartal]
  204. , [Monat]
  205. , [Tag]
  206. , [Zeit_Spezialkategorie]
  207. , [Zeit_Ebene1]
  208. , [Zeit_Ebene2]
  209. , CASE
  210. WHEN [Zeit_Ebene2] = [Quartal] THEN [Monat]
  211. WHEN [Zeit_Ebene2] = [Monat] THEN [Tag]
  212. END AS [Zeit_Ebene3]
  213. FROM [Zeit_Spezial_Ebene2])
  214. , [Zeit_Spezial_Ebene4]
  215. AS (SELECT [Datum]
  216. , [Jahr]
  217. , [Quartal]
  218. , [Monat]
  219. , [Tag]
  220. , [Zeit_Spezialkategorie]
  221. , [Zeit_Ebene1]
  222. , [Zeit_Ebene2]
  223. , [Zeit_Ebene3]
  224. , CASE
  225. WHEN [Zeit_Ebene3] = [Monat] THEN [Tag]
  226. END AS [Zeit_Ebene4]
  227. FROM [Zeit_Spezial_Ebene3])
  228. SELECT *
  229. FROM [Zeit_Spezial_Ebene4]
  230. GO
  231. SET QUOTED_IDENTIFIER OFF
  232. GO
  233. SET ANSI_NULLS OFF
  234. GO
  235. GO