Advertisement
Guest User

Untitled

a guest
May 29th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 11.36 KB | None | 0 0
  1.  
  2.  
  3.  
  4. USE szukam
  5. GO
  6. CREATE SCHEMA Gadzalinski AUTHORIZATION dbo
  7. GO
  8.  
  9.  
  10. USE szukam
  11. GO
  12. CREATE TABLE Gadzalinski.DIM_CONDITIONS(
  13. conditionsID INT NOT NULL IDENTITY (1,1),
  14. light_condition varchar(10),
  15. weather varchar(20),
  16. road_surface varchar(16),
  17. special_conditions varchar(16)
  18. );
  19. GO
  20.  
  21.  
  22. USE szukam
  23. GO
  24. CREATE TABLE Gadzalinski.DIM_CASUALTY(
  25. casualtyID INT NOT NULL IDENTITY(1,1),
  26. casualty_class varchar(14),
  27. casualty_sex varchar(8),
  28. casualty_age_band varchar(7),
  29. age SMALLINT,
  30. casualty_severity varchar(9),
  31. mode_of_travel varchar(19)
  32. );
  33. GO
  34.  
  35.  
  36. USE szukam
  37. GO
  38. CREATE TABLE Gadzalinski.DIM_LOCATION(
  39. locationID INT NOT NULL IDENTITY(1,1),
  40. Warcode varchar(9),
  41. ward_name varchar(30),
  42. attendantLocation VARCHAR(66),
  43. spatial_accuracy varchar(7),
  44. junction_detail varchar(15)
  45. );
  46. GO
  47.  
  48.  
  49. USE szukam
  50. GO
  51. CREATE TABLE Gadzalinski.DIM_ROAD(
  52. roadID INT NOT NULL IDENTITY(1,1),
  53. highway varchar(6),
  54. road_class1 varchar(12),
  55. road_number INT,
  56. road_type varchar(12),
  57. speed_limit varchar(11),
  58. junction_control varchar(23),
  59. road_class2 varchar(17),
  60. road_number2 INT
  61. );
  62. GO
  63.  
  64.  
  65. USE szukam
  66. GO
  67. CREATE TABLE Gadzalinski.FACT_ACCIDENT(
  68. accidentID INT NOT NULL IDENTITY(1,1),
  69. casualtyID INT,
  70. conditionID INT,
  71. roadID INT,
  72. locationID INT,
  73. accidentDate INT,
  74. number_of_casualties INT,
  75. number_of_vehicles INT,
  76. reference varchar(11)
  77. );
  78. GO
  79.  
  80.  
  81. USE szukam
  82. GO
  83. CREATE TABLE Gadzalinski.DIM_DATE(
  84. [Time] INT CONSTRAINT PK_TIME PRIMARY KEY,
  85. [Year] INT,
  86. [Month] VARCHAR(20),
  87. [Week_day] VARCHAR(20),
  88. [Day] INT
  89. );
  90. GO
  91.  
  92. USE szukam
  93. GO
  94. CREATE TABLE Gadzalinski.[Months](
  95. Number int PRIMARY KEY,
  96. Name VARCHAR(9) NOT NULL
  97. );
  98. GO
  99.  
  100. USE szukam
  101. GO
  102. CREATE TABLE Gadzalinski.[Days](
  103. Number int PRIMARY KEY,
  104. Name VARCHAR(9) NOT NULL
  105. );
  106. GO
  107.  
  108.  
  109.  
  110. ----------------------------------------------------------
  111.  
  112. --nowe
  113. USE szukam
  114. GO
  115. INSERT INTO Gadzalinski.DIM_CONDITIONS(light_condition,weather,road_surface,special_conditions)
  116. SELECT DISTINCT
  117. [Light Condition Band],
  118. [Weather],
  119. [Road Surface],
  120. [Special Conditions]
  121. FROM [Road_Collision_Casualties_in_Camden_-_last_3_years]
  122. GO
  123. --nowe
  124.  
  125.  
  126.  
  127. USE szukam
  128. GO
  129. INSERT INTO Gadzalinski.DIM_CASUALTY(casualty_class,casualty_sex,casualty_age_band,age,casualty_severity,mode_of_travel)
  130. SELECT DISTINCT
  131. [Casualty Class],
  132. [Casualty Sex],
  133. [Casualty Age Band],
  134. [Casualty Age],
  135. [Casualty Severity],
  136. [Mode Of Travel]
  137. FROM [Road_Collision_Casualties_in_Camden_-_last_3_years]
  138. GO
  139.  
  140.  
  141.  
  142. USE szukam
  143. GO
  144. INSERT INTO Gadzalinski.DIM_LOCATION(Warcode,ward_name,attendantLocation,spatial_accuracy,junction_detail)
  145. SELECT DISTINCT
  146. [Ward Code],
  147. [Ward Name],
  148. [Attendant Location],
  149. [Spatial Accuracy],
  150. [Junction Detail]
  151. FROM [Road_Collision_Casualties_in_Camden_-_last_3_years]
  152. GO
  153.  
  154.  
  155.  
  156.  
  157.  
  158. USE szukam
  159. GO
  160. INSERT INTO Gadzalinski.DIM_ROAD(highway,road_class1,road_number,road_type,speed_limit,junction_control,road_class2,road_number2)
  161. SELECT DISTINCT
  162. [Highway],
  163. [Road Class 1],
  164. [Road Number 1],
  165. [Road Type],
  166. [Speed Limit],
  167. [Junction Control],
  168. [Road Class 2],
  169. [Road Number 2]
  170. FROM [Road_Collision_Casualties_in_Camden_-_last_3_years]
  171. GO
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178. USE szukam
  179. GO
  180. INSERT INTO Gadzalinski.FACT_ACCIDENT(casualtyID,conditionID,roadID,locationID,accidentDate,number_of_casualties,number_of_vehicles,reference)
  181. SELECT
  182. CAS.casualtyID,
  183. CON.conditionsID,
  184. ROA.roadID,
  185. LOC.locationID,
  186.     CAST(CONCAT(datepart(YY, [Road_Collision_Casualties_in_Camden_-_last_3_years].[Date]),
  187.             CASE WHEN datepart(M, [Road_Collision_Casualties_in_Camden_-_last_3_years].[Date]) < 10 THEN '0' END, datepart(M, [Road_Collision_Casualties_in_Camden_-_last_3_years].[Date]),
  188.             CASE WHEN datepart(D, [Road_Collision_Casualties_in_Camden_-_last_3_years].[Date]) < 10 THEN '0' END, datepart(D, [Road_Collision_Casualties_in_Camden_-_last_3_years].[Date])) AS int),
  189. [Number Of Casualties],
  190. [Number Of Vehicles],
  191. [Reference]
  192. FROM [Road_Collision_Casualties_in_Camden_-_last_3_years], Gadzalinski.DIM_CONDITIONS CON, Gadzalinski.DIM_CASUALTY CAS, Gadzalinski.DIM_LOCATION LOC, Gadzalinski.DIM_ROAD ROA
  193. WHERE
  194. ROA.highway= [Road_Collision_Casualties_in_Camden_-_last_3_years].Highway AND
  195. ROA.road_class1=[Road_Collision_Casualties_in_Camden_-_last_3_years].[Road Class 1] AND
  196. ROA.road_number=[Road_Collision_Casualties_in_Camden_-_last_3_years].[Road Number 1] AND
  197. ROA.road_type=[Road_Collision_Casualties_in_Camden_-_last_3_years].[Road Type] AND
  198. ROA.speed_limit=[Road_Collision_Casualties_in_Camden_-_last_3_years].[Speed Limit] AND
  199. ROA.junction_control=[Road_Collision_Casualties_in_Camden_-_last_3_years].[Junction Control] AND
  200. ROA.road_class2=[Road_Collision_Casualties_in_Camden_-_last_3_years].[Road Class 2] AND
  201. ROA.road_number2=[Road_Collision_Casualties_in_Camden_-_last_3_years].[Road Number 2] AND
  202.  
  203. LOC.Warcode=[Road_Collision_Casualties_in_Camden_-_last_3_years].[Ward Code] AND
  204. LOC.ward_name=[Road_Collision_Casualties_in_Camden_-_last_3_years].[Ward Name] AND
  205. LOC.attendantLocation=[Road_Collision_Casualties_in_Camden_-_last_3_years].[Attendant Location] AND
  206. LOC.spatial_accuracy=[Road_Collision_Casualties_in_Camden_-_last_3_years].[Spatial Accuracy] AND
  207. LOC.junction_detail= [Road_Collision_Casualties_in_Camden_-_last_3_years].[Junction Detail] AND
  208.  
  209. CON.light_condition=[Road_Collision_Casualties_in_Camden_-_last_3_years].[Light Condition Band] AND
  210. CON.weather=[Road_Collision_Casualties_in_Camden_-_last_3_years].Weather AND
  211. CON.road_surface=[Road_Collision_Casualties_in_Camden_-_last_3_years].[Road Surface] AND
  212. CON.special_conditions= [Road_Collision_Casualties_in_Camden_-_last_3_years].[Special Conditions] AND
  213.  
  214. CAS.casualty_class=[Road_Collision_Casualties_in_Camden_-_last_3_years].[Casualty Class] AND
  215. CAS.casualty_sex=[Road_Collision_Casualties_in_Camden_-_last_3_years].[Casualty Sex] AND
  216. CAS.casualty_age_band=[Road_Collision_Casualties_in_Camden_-_last_3_years].[Casualty Age Band] AND
  217. CAS.age=[Road_Collision_Casualties_in_Camden_-_last_3_years].[Casualty Age] AND
  218. CAS.casualty_severity=[Road_Collision_Casualties_in_Camden_-_last_3_years].[Casualty Severity] AND
  219. CAS.mode_of_travel=[Road_Collision_Casualties_in_Camden_-_last_3_years].[Mode Of Travel]
  220.  
  221. GO
  222.  
  223.  
  224.  
  225. USE szukam
  226. GO
  227. INSERT INTO Gadzalinski.Months VALUES
  228. (1,'January'),
  229. (2,'February'),
  230. (3,'March'),
  231. (4,'April'),
  232. (5,'May'),
  233. (6,'June'),
  234. (7,'July'),
  235. (8,'August'),
  236. (9,'September'),
  237. (10,'October'),
  238. (11,'November'),
  239. (12,'December');
  240. GO
  241.  
  242. USE szukam
  243. GO
  244. INSERT INTO Gadzalinski.[Days] VALUES
  245. (1,'Sunday'),
  246. (2,'Monday'),
  247. (3,'Tuesday'),
  248. (4,'Wednesday'),
  249. (5,'Thursday'),
  250. (6,'Friday'),
  251. (7,'Saturday');
  252. GO
  253.  
  254. USE szukam
  255. GO
  256. INSERT INTO Gadzalinski.DIM_DATE
  257. SELECT DISTINCT
  258. CAST(CONCAT(datepart(YY, [Date]),
  259.                     CASE WHEN datepart(M, [Date]) < 10 THEN '0' END,
  260.                     datepart(M, [Date]),
  261.                     CASE WHEN datepart(D, [Date]) < 10 THEN '0' END,
  262.                     datepart(D, [Date]))    AS int),
  263.     DATEPART(YY, [Date]), MON.[Name], D.[Name], DATEPART(D, [Date])
  264. FROM [Road_Collision_Casualties_in_Camden_-_last_3_years]
  265. JOIN Gadzalinski.Months MON ON DATEPART(M,[Date])=MON.Number
  266. JOIN Gadzalinski.[Days] D ON DATEPART(DW,[Date])=D.Number
  267. GO
  268.  
  269.  
  270.  
  271.  
  272.  
  273. --------
  274. USE szukam
  275. GO
  276. ALTER TABLE Gadzalinski.DIM_CONDITIONS
  277. ADD CONSTRAINT PK_DIM_CONDITIONS PRIMARY KEY(conditionsID);
  278. GO
  279.  
  280. ALTER TABLE Gadzalinski.DIM_CASUALTY
  281. ADD CONSTRAINT PK_DIM_CASUALTY PRIMARY KEY (casualtyID);
  282. GO
  283.  
  284. ALTER TABLE Gadzalinski.DIM_LOCATION
  285. ADD CONSTRAINT PK_DIM_LOCATION PRIMARY KEY (locationID);
  286. GO
  287.  
  288. ALTER TABLE Gadzalinski.DIM_ROAD
  289. ADD CONSTRAINT PK_DIM_ROAD PRIMARY KEY(roadID);
  290. GO
  291.  
  292. ALTER TABLE Gadzalinski.FACT_ACCIDENT
  293. ADD CONSTRAINT PK_FACT_ACCIDENT PRIMARY KEY (accidentID),
  294. CONSTRAINT FK_ACCIDENT_CASUALTYID FOREIGN KEY (casualtyID) REFERENCES Gadzalinski.DIM_CASUALTY(casualtyID),
  295. CONSTRAINT FK_CONDITION_CONDITIONID FOREIGN KEY (conditionID) REFERENCES Gadzalinski.DIM_CONDITIONS(conditionsID),
  296. CONSTRAINT FK_ROAD_ROADID FOREIGN KEY(roadID) REFERENCES Gadzalinski.DIM_ROAD(roadID),
  297. CONSTRAINT FK_LOCATION_LOCATIONID FOREIGN KEY(locationID) REFERENCES Gadzalinski.DIM_LOCATION(locationID),
  298. CONSTRAINT FK_DATE_ACCIDENTDATE FOREIGN KEY ([accidentDate]) REFERENCES Gadzalinski.DIM_DATE([Time]);
  299. GO
  300.  
  301.  
  302. --
  303.  
  304. USE szukam
  305. GO
  306. UPDATE Gadzalinski.DIM_CONDITIONS
  307. SET light_condition = SUBSTRING(light_condition,3,15)
  308. WHERE light_condition LIKE '[0-9]%';
  309. GO
  310.  
  311. GO
  312. UPDATE Gadzalinski.DIM_CONDITIONS
  313. SET weather = SUBSTRING(weather,3,30)
  314. WHERE weather LIKE '[0-9]%';
  315. GO
  316.  
  317. UPDATE Gadzalinski.DIM_CONDITIONS
  318. SET road_surface = SUBSTRING(road_surface,3,20)
  319. WHERE road_surface LIKE '[0-9]%';
  320. GO
  321.  
  322. UPDATE Gadzalinski.DIM_CONDITIONS
  323. SET special_conditions = SUBSTRING(special_conditions,3,20)
  324. WHERE special_conditions LIKE '[0-9]%';
  325. GO
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332. USE szukam
  333. GO
  334. UPDATE Gadzalinski.DIM_CASUALTY
  335. SET casualty_class = SUBSTRING(casualty_class,3,15)
  336. WHERE casualty_class LIKE '[0-9]%';
  337. GO
  338.  
  339. UPDATE Gadzalinski.DIM_CASUALTY
  340. SET casualty_sex= SUBSTRING(casualty_sex,2,9)
  341. WHERE casualty_sex LIKE '[0-9]%';
  342. GO
  343.  
  344. UPDATE Gadzalinski.DIM_CASUALTY
  345. SET casualty_severity = SUBSTRING(casualty_severity,3,15)
  346. WHERE casualty_severity LIKE '[0-9]%';
  347. GO
  348.  
  349. UPDATE Gadzalinski.DIM_CASUALTY
  350. SET mode_of_travel= SUBSTRING(mode_of_travel,3,30)
  351. WHERE mode_of_travel LIKE '[0-9]%';
  352. GO
  353.  
  354.  
  355.  
  356.  
  357. USE szukam
  358. GO
  359. UPDATE Gadzalinski.DIM_LOCATION
  360. SET Warcode='UNKOWN'
  361. WHERE Warcode=' ';
  362. GO
  363.  
  364. UPDATE Gadzalinski.DIM_LOCATION
  365. SET ward_name='Unkown'
  366. WHERE ward_name=' ';
  367. GO
  368.  
  369. UPDATE Gadzalinski.DIM_LOCATION
  370. SET spatial_accuracy='Unkown'
  371. WHERE spatial_accuracy=' ';
  372. GO
  373.  
  374. UPDATE Gadzalinski.DIM_LOCATION
  375. SET junction_detail=SUBSTRING(junction_detail,2,25)
  376. WHERE junction_detail LIKE '[0-9]%';
  377. GO
  378.  
  379.  
  380. USE szukam
  381. GO
  382. UPDATE Gadzalinski.DIM_ROAD
  383. SET highway= SUBSTRING(highway,3,15)
  384. WHERE highway LIKE '[0-9]%';
  385. GO
  386.  
  387. UPDATE Gadzalinski.DIM_ROAD
  388. SET road_type= SUBSTRING(road_type,2,20)
  389. WHERE road_type LIKE '[0-9]%';
  390. GO
  391.  
  392. UPDATE Gadzalinski.DIM_ROAD
  393. SET speed_limit= SUBSTRING(speed_limit,3,15)
  394. WHERE speed_limit LIKE '[0-9]%';
  395. GO
  396.  
  397. UPDATE Gadzalinski.DIM_ROAD
  398. SET junction_control= SUBSTRING(junction_control,3,45)
  399. WHERE junction_control LIKE '[0-9]%';
  400. GO
  401.  
  402. UPDATE Gadzalinski.DIM_ROAD
  403. SET junction_control= SUBSTRING(junction_control,3,25)
  404. WHERE junction_control LIKE '-%';
  405. GO
  406.  
  407. UPDATE Gadzalinski.DIM_ROAD
  408. SET road_class2= SUBSTRING(road_class2,3,17)
  409. WHERE road_class2 LIKE '-%';
  410. GO
  411.  
  412. -----
  413.  
  414.  
  415.  
  416.  
  417.  
  418. USE szukam
  419. GO
  420. IF EXISTS (SELECT TABLE_NAME
  421.             FROM INFORMATION_SCHEMA.TABLES
  422.             WHERE TABLE_NAME LIKE ('FACT_ACCIDENT'))
  423. DROP TABLE Gadzalinski.FACT_ACCIDENT;
  424. GO
  425.  
  426. IF EXISTS (SELECT TABLE_NAME
  427.             FROM INFORMATION_SCHEMA.TABLES
  428.             WHERE TABLE_NAME LIKE ('DIM_CASUALTY'))
  429. DROP TABLE Gadzalinski.DIM_CASUALTY;
  430. GO
  431.  
  432. IF EXISTS (SELECT TABLE_NAME
  433.             FROM INFORMATION_SCHEMA.TABLES
  434.             WHERE TABLE_NAME LIKE ('DIM_CONDITIONS'))
  435. DROP TABLE Gadzalinski.DIM_CONDITIONS;
  436. GO
  437.  
  438. IF EXISTS (SELECT TABLE_NAME
  439.             FROM INFORMATION_SCHEMA.TABLES
  440.             WHERE TABLE_NAME LIKE ('DIM_ROAD'))
  441. DROP TABLE Gadzalinski.DIM_ROAD;
  442. GO
  443.  
  444. IF EXISTS (SELECT TABLE_NAME
  445.             FROM INFORMATION_SCHEMA.TABLES
  446.             WHERE TABLE_NAME LIKE('DIM_LOCATION'))
  447. DROP TABLE Gadzalinski.DIM_LOCATION;
  448. GO
  449.  
  450. IF EXISTS (SELECT TABLE_NAME
  451.             FROM INFORMATION_SCHEMA.TABLES
  452.             WHERE TABLE_NAME LIKE('DIM_DATE'))
  453. DROP TABLE Gadzalinski.DIM_DATE;
  454. GO
  455.  
  456. IF EXISTS (SELECT TABLE_NAME
  457.             FROM INFORMATION_SCHEMA.TABLES
  458.             WHERE TABLE_NAME LIKE('Days'))
  459. DROP TABLE Gadzalinski.Days;
  460. GO
  461.  
  462. IF EXISTS (SELECT TABLE_NAME
  463.             FROM INFORMATION_SCHEMA.TABLES
  464.             WHERE TABLE_NAME LIKE ('Months'))
  465. DROP TABLE Gadzalinski.Months;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement