· 6 years ago · Nov 20, 2019, 10:46 AM
1USE master
2GO
3
4IF EXISTS (
5 SELECT name
6 FROM sys.databases
7 WHERE name = N'KN_301_Larin'
8)
9ALTER DATABASE KN_301_Larin set single_user with rollback immediate
10GO
11
12IF EXISTS (
13 SELECT name
14 FROM sys.databases
15 WHERE name = N'KN_301_Larin'
16)
17DROP DATABASE KN_301_Larin
18GO
19
20CREATE DATABASE KN_301_Larin
21GO
22
23USE KN_301_Larin
24GO
25
26IF EXISTS(
27 SELECT *
28 FROM sys.schemas
29 WHERE name = N'Larin'
30)
31DROP SCHEMA Larin
32GO
33
34CREATE SCHEMA Larin
35GO
36
37IF OBJECT_ID (N'KN_301_Larin.Larin.isStateNumberCorrect ', N'FN') IS NOT NULL
38 DROP FUNCTION Larin.isStateNumberCorrect;
39GO
40
41CREATE FUNCTION Larin.isStateNumberCorrect(@stateNumber VARCHAR(9))
42RETURNS BIT
43AS
44BEGIN
45 IF (@stateNumber like '[АВЕКМНОРСТУХавекмнорстух][1-9][0-9][0-9][АВЕКМНОРСТУХавекмнорстух][АВЕКМНОРСТУХавекмнорстух][1,2,7][0-9][0-9]' OR
46 @stateNumber like '[АВЕКМНОРСТУХ][1-9][0-9][0-9][АВЕКМНОРСТУХавекмнорстух][АВЕКМНОРСТУХавекмнорстух][0-9][0-9]' OR
47
48 @stateNumber like '[АВЕКМНОРСТУХавекмнорстух]0[1-9][0-9][АВЕКМНОРСТУХавекмнорстух][АВЕКМНОРСТУХавекмнорстух][1,2,7][0-9][0-9]' OR
49 @stateNumber like '[АВЕКМНОРСТУХавекмнорстух]0[1-9][0-9][АВЕКМНОРСТУХавекмнорстух][АВЕКМНОРСТУХавекмнорстух][0-9][0-9]' OR
50
51 @stateNumber like '[АВЕКМНОРСТУХавекмнорстух]00[1-9][АВЕКМНОРСТУХавекмнорстух][АВЕКМНОРСТУХавекмнорстух][1,2,7][0-9][0-9]' OR
52 @stateNumber like '[АВЕКМНОРСТУХавекмнорстух]00[1-9][АВЕКМНОРСТУХавекмнорстух][АВЕКМНОРСТУХавекмнорстух][0-9][0-9]')
53 BEGIN
54 RETURN 1;
55 END
56 RETURN 0;
57END;
58GO
59
60IF OBJECT_ID (N'KN_301_Larin.Larin.getRegionNumber', N'FN') IS NOT NULL
61 DROP FUNCTION Larin.getRegionNumber;
62GO
63
64CREATE FUNCTION Larin.getRegionNumber(@stateNumber VARCHAR(9))
65RETURNS int
66AS
67BEGIN
68 DECLARE @regionNumber int = CAST(SUBSTRING(@stateNumber, LEN(@stateNumber) - 1, LEN(@stateNumber)) AS INT)
69 IF ((SELECT COUNT(*) FROM KN_301_Larin.Larin.Regions WHERE regionNumber = @regionNumber) = 1)
70 RETURN @regionNumber
71 RETURN null
72END;
73GO
74
75CREATE TABLE KN_301_Larin.Larin.TravelInformationForInsert
76(
77 stateNumber varchar(9) CHECK (Larin.isStateNumberCorrect(stateNumber) = 1) NOT NULL,
78 isInside int NOT NULL,
79 postId tinyint NOT NULL,
80 crossingTime time NOT NULL
81)
82
83
84CREATE TABLE KN_301_Larin.Larin.TravelInformation
85(
86 stateNumberId int NOT NULL,
87 isInside bit NOT NULL,
88 postId tinyint NOT NULL,
89 crossingTime time NOT NULL
90)
91GO
92
93CREATE TABLE KN_301_Larin.Larin.Post
94(
95 postId tinyint NOT NULL,
96 postName varchar(40) NOT NULL
97 CONSTRAINT PK_postId PRIMARY KEY (postId)
98)
99
100CREATE TABLE KN_301_Larin.Larin.StateNumberInformation
101(
102 id int NOT NULL IDENTITY PRIMARY KEY,
103 stateNumber varchar(9) NOT NULL,
104 regionNumber AS Larin.getRegionNumber(stateNumber),
105)
106
107CREATE INDEX stateNumberIndex ON KN_301_Larin.Larin.StateNumberInformation (stateNumber);
108
109
110CREATE TABLE KN_301_Larin.Larin.Regions
111(
112 regionNumber tinyint NOT NULL,
113 regionName varchar(60) NOT NULL
114 CONSTRAINT PK_regionNumber PRIMARY KEY (regionNumber)
115)
116GO
117
118ALTER TABLE KN_301_Larin.Larin.TravelInformation
119WITH CHECK ADD CONSTRAINT FK_postId FOREIGN KEY (postId)
120REFERENCES KN_301_Larin.Larin.Post (postId)
121ON UPDATE CASCADE
122ON DELETE CASCADE
123GO
124
125ALTER TABLE KN_301_Larin.Larin.TravelInformation
126WITH CHECK ADD CONSTRAINT stateNumberId FOREIGN KEY (stateNumberId)
127REFERENCES KN_301_Larin.Larin.StateNumberInformation (id)
128ON UPDATE CASCADE
129ON DELETE CASCADE
130GO
131
132INSERT INTO KN_301_Larin.Larin.Post (postId, postName) VALUES
133(0, 'Юг')
134,(1, 'Север')
135,(2, 'Запад')
136,(3, 'Восток')
137GO
138
139INSERT INTO KN_301_Larin.Larin.Regions (regionNumber, regionName) VALUES
140(1, 'Республика Адыгея')
141,(2, 'Республика Башкортостан')
142,(3, 'Республика Бурятия')
143,(4, 'Республика Алтай')
144,(5, 'Республика Дагестан')
145,(6, 'Республика Ингушетия')
146,(7, 'Кабардино-Балкарская Республика')
147,(8, 'Республика Калмыкия')
148,(9, 'Карачаево-Черкесская Республика')
149,(10, 'Республика Карелия')
150,(11, 'Республика Коми')
151,(12, 'Республика Марий Эл')
152,(13, 'Республика Мордовия')
153,(14, 'Республика Саха (Якутия)')
154,(15, 'Республика Северная Осетия - Алания')
155,(16, 'Республика Татарстан (Татарстан)')
156,(17, 'Республика Тыва')
157,(18, 'Удмуртская Республика')
158,(19, 'Республика Хакасия')
159,(20, 'Чеченская Республика')
160,(21, 'Чувашская Республика - Чувашия')
161,(22, 'Алтайский край')
162,(23, 'Краснодарский край')
163,(24, 'Красноярский край')
164,(25, 'Приморский край')
165,(26, 'Ставропольский край')
166,(27, 'Хабаровский край')
167,(28, 'Амурская область')
168,(29, 'Архангельская область')
169,(30, 'Астраханская область')
170,(31, 'Белгородская область')
171,(32, 'Брянская область')
172,(33, 'Владимирская область')
173,(34, 'Волгоградская область')
174,(35, 'Вологодская область')
175,(36, 'Воронежская область')
176,(37, 'Ивановская область')
177,(38, 'Иркутская область')
178,(39, 'Калининградская область')
179,(40, 'Калужская область')
180,(41, 'Камчатский край')
181,(42, 'Кемеровская область')
182,(43, 'Кировская область')
183,(44, 'Костромская область')
184,(45, 'Курганская область')
185,(46, 'Курская область')
186,(47, 'Ленинградская область')
187,(48, 'Липецкая область')
188,(49, 'Магаданская область')
189,(50, 'Московская область')
190,(51, 'Мурманская область')
191,(52, 'Нижегородская область')
192,(53, 'Новгородская область')
193,(54, 'Новосибирская область')
194,(55, 'Омская область')
195,(56, 'Оренбургская область')
196,(57, 'Орловская область')
197,(58, 'Пензенская область')
198,(59, 'Пермский край')
199,(60, 'Псковская область')
200,(61, 'Ростовская область')
201,(62, 'Рязанская область')
202,(63, 'Самарская область')
203,(64, 'Саратовская область')
204,(65, 'Сахалинская область')
205,(66, 'Свердловская область')
206,(67, 'Смоленская область')
207,(68, 'Тамбовская область')
208,(69, 'Тверская область')
209,(70, 'Томская область')
210,(71, 'Тульская область')
211,(72, 'Тюменская область')
212,(73, 'Ульяновская область')
213,(74, 'Челябинская область')
214,(75, 'Забайкальский край')
215,(76, 'Ярославская область')
216,(77, 'г. Москва')
217,(78, 'Санкт-Петербург')
218,(79, 'Еврейская автономная область')
219,(83, 'Ненецкий автономный округ')
220,(86, 'Ханты-Мансийский автономный округ - Югра')
221,(87, 'Чукотский автономный округ')
222,(89, 'Ямало-Ненецкий автономный округ')
223,(91, 'Республика Крым')
224,(92, 'Севастополь')
225,(99, 'Иные территории включая город и космодром Байконур')
226GO
227
228
229IF OBJECT_ID (N'KN_301_Larin.Larin.getStateNumber', N'FN') IS NOT NULL
230 DROP FUNCTION Larin.getStateNumber;
231GO
232
233CREATE FUNCTION Larin.getStateNumber(@stateNumberId int)
234RETURNS VARCHAR(9)
235AS
236BEGIN
237 DECLARE getStateNumberCursor CURSOR FOR
238 SELECT stateNumber
239 FROM KN_301_Larin.Larin.StateNumberInformation
240 WHERE UPPER(@stateNumberId) = id
241
242 OPEN getStateNumberCursor
243 DECLARE @result VARCHAR(9)
244 FETCH NEXT FROM getStateNumberCursor INTO @result
245 CLOSE getStateNumberCursor
246 DEALLOCATE getStateNumberCursor
247 RETURN @result
248END;
249GO
250
251IF OBJECT_ID (N'KN_301_Larin.Larin.getStateNumberId', N'FN') IS NOT NULL
252 DROP FUNCTION Larin.getStateNumberId;
253GO
254
255CREATE FUNCTION Larin.getStateNumberId(@stateNumber varchar(9))
256RETURNS int
257AS
258BEGIN
259 DECLARE getStateNumberIdCursor CURSOR FOR
260 SELECT id
261 FROM KN_301_Larin.Larin.StateNumberInformation
262 WHERE UPPER(@stateNumber) = stateNumber
263
264 OPEN getStateNumberIdCursor
265 DECLARE @result int
266 FETCH NEXT FROM getStateNumberIdCursor INTO @result
267 CLOSE getStateNumberIdCursor
268 DEALLOCATE getStateNumberIdCursor
269 RETURN @result
270END;
271GO
272
273IF OBJECT_ID (N'KN_301_Larin.Larin.formatDirection', N'FN') IS NOT NULL
274 DROP FUNCTION Larin.formatDirection;
275GO
276
277CREATE FUNCTION Larin.formatDirection(@direction bit)
278RETURNS varchar(10)
279AS
280BEGIN
281 IF (@direction = 1)
282 RETURN 'В город'
283 IF (@direction = 0)
284 RETURN 'Из города'
285 RETURN null
286END;
287GO
288
289
290IF OBJECT_ID (N'KN_301_Larin.Larin.isCarInCity', N'FN') IS NOT NULL
291 DROP FUNCTION Larin.isCarInCity;
292GO
293
294CREATE FUNCTION Larin.isCarInCity(@stateNumber VARCHAR(9))
295RETURNS int
296AS
297BEGIN
298 DECLARE isCarInCityCursor CURSOR FOR
299 SELECT isInside
300 FROM KN_301_Larin.Larin.TravelInformation
301 WHERE UPPER(@stateNumber) = Larin.getstateNumber(stateNumberId)
302
303 OPEN isCarInCityCursor
304 DECLARE @result bit
305 FETCH NEXT FROM isCarInCityCursor INTO @result
306 CLOSE isCarInCityCursor
307 DEALLOCATE isCarInCityCursor
308 RETURN @result
309END;
310GO
311
312IF OBJECT_ID (N'KN_301_Larin.Larin.getLastTravelTime', N'FN') IS NOT NULL
313 DROP FUNCTION Larin.getLastTravelTime;
314GO
315
316CREATE FUNCTION Larin.getLastTravelTime(@stateNumber VARCHAR(9))
317RETURNS time
318AS
319BEGIN
320 DECLARE lastTravelTimeCursor CURSOR FOR
321 SELECT crossingTime
322 FROM KN_301_Larin.Larin.TravelInformation
323 WHERE UPPER(@stateNumber) = Larin.getstateNumber(stateNumberId)
324
325 OPEN lastTravelTimeCursor
326 DECLARE @result time
327 FETCH NEXT FROM lastTravelTimeCursor INTO @result
328 CLOSE lastTravelTimeCursor
329 DEALLOCATE lastTravelTimeCursor
330 RETURN @result
331END;
332GO
333
334CREATE TRIGGER Larin.AddTravelInformation
335 ON KN_301_Larin.Larin.TravelInformationForInsert
336 INSTEAD OF INSERT
337AS BEGIN
338 DECLARE @stateNumber VARCHAR(9)
339 DECLARE @isInside INT
340 DECLARE @postId TINYINT
341 DECLARE @crossingTime DATETIME
342
343 DECLARE travleCursor CURSOR FOR
344 SELECT stateNumber, isInside, postId, crossingTime
345 FROM inserted
346
347 OPEN travleCursor
348 FETCH NEXT FROM travleCursor INTO @stateNumber, @isInside, @postId, @crossingTime
349
350 WHILE @@FETCH_STATUS = 0
351 BEGIN
352 IF (Larin.isStateNumberCorrect(@stateNumber) = 1)
353 BEGIN
354 IF NOT EXISTS(SELECT id
355 FROM KN_301_Larin.Larin.StateNumberInformation
356 WHERE stateNumber = UPPER(@stateNumber))
357 BEGIN
358 INSERT INTO KN_301_Larin.Larin.StateNumberInformation (stateNumber) VALUES
359 (UPPER(@stateNumber))
360 END
361
362 DECLARE tmpTableCursor CURSOR FOR
363 SELECT TOP 1 id
364 FROM KN_301_Larin.Larin.StateNumberInformation
365 WHERE stateNumber = UPPER(@stateNumber)
366 OPEN tmpTableCursor
367 DECLARE @stateNumberId INT
368 FETCH NEXT FROM tmpTableCursor INTO @stateNumberId
369 CLOSE tmpTableCursor
370 DEALLOCATE tmpTableCursor
371 IF (Larin.isCarInCity(@stateNumber) IS NULL OR Larin.isCarInCity(@stateNumber) <> @isInside
372 AND datediff(mi, Larin.getLastTravelTime(@stateNumber), @crossingTime) >= 5)
373 BEGIN
374 INSERT INTO KN_301_Larin.Larin.TravelInformation (stateNumberId, isInside, postId, crossingTime) VALUES
375 (@stateNumberId, @isInside, @postId, @crossingTime)
376 END
377 END
378 FETCH NEXT FROM travleCursor INTO @stateNumber, @isInside, @postId, @crossingTime
379 END
380
381 CLOSE travleCursor
382 DEALLOCATE travleCursor
383END
384GO
385
386
387
388
389IF OBJECT_ID (N'KN_301_Larin.Larin.getInsidePostId', N'FN') IS NOT NULL
390 DROP FUNCTION Larin.getInsidePostId;
391GO
392
393CREATE FUNCTION Larin.getInsidePostId(@stateNumber varchar(9))
394RETURNS tinyint
395AS
396BEGIN
397 DECLARE getInsidePostIdCursor CURSOR FOR
398 SELECT postId
399 FROM KN_301_Larin.Larin.TravelInformation
400 WHERE stateNumberId = Larin.getStateNumberId(@stateNumber) AND isInside = 1
401
402 OPEN getInsidePostIdCursor
403 DECLARE @result tinyint
404 FETCH NEXT FROM getInsidePostIdCursor INTO @result
405 CLOSE getInsidePostIdCursor
406 DEALLOCATE getInsidePostIdCursor
407 RETURN @result
408END;
409GO
410
411IF OBJECT_ID (N'KN_301_Larin.Larin.getPostName', N'FN') IS NOT NULL
412 DROP FUNCTION Larin.getPostName;
413GO
414
415CREATE FUNCTION Larin.getPostName(@postId tinyint)
416RETURNS varchar(30)
417AS
418BEGIN
419 DECLARE getInsidePostIdCursor CURSOR FOR
420 SELECT postName
421 FROM KN_301_Larin.Larin.Post
422 WHERE postId = @postId
423
424 OPEN getInsidePostIdCursor
425 DECLARE @result varchar(30)
426 FETCH NEXT FROM getInsidePostIdCursor INTO @result
427 CLOSE getInsidePostIdCursor
428 DEALLOCATE getInsidePostIdCursor
429 RETURN @result
430END;
431GO
432
433
434IF OBJECT_ID (N'KN_301_Larin.Larin.getOutsidePostId', N'FN') IS NOT NULL
435 DROP FUNCTION Larin.getOutsidePostId;
436GO
437
438CREATE FUNCTION Larin.getOutsidePostId(@stateNumber varchar(9))
439RETURNS tinyint
440AS
441BEGIN
442 DECLARE getOutsidePostIdCursor CURSOR FOR
443 SELECT postId
444 FROM KN_301_Larin.Larin.TravelInformation
445 WHERE stateNumberId = Larin.getStateNumberId(@stateNumber) AND isInside = 0
446
447 OPEN getOutsidePostIdCursor
448 DECLARE @result tinyint
449 FETCH NEXT FROM getOutsidePostIdCursor INTO @result
450 CLOSE getOutsidePostIdCursor
451 DEALLOCATE getOutsidePostIdCursor
452 RETURN @result
453END;
454GO
455
456IF OBJECT_ID (N'KN_301_Larin.Larin.getOutsideData', N'FN') IS NOT NULL
457 DROP FUNCTION Larin.getOutsidePostId;
458GO
459
460CREATE FUNCTION Larin.getOutsideData(@stateNumber varchar(9))
461RETURNS time
462AS
463BEGIN
464 DECLARE getOutsidePostIdCursor CURSOR FOR
465 SELECT crossingTime
466 FROM KN_301_Larin.Larin.TravelInformation
467 WHERE stateNumberId = Larin.getStateNumberId(@stateNumber) AND isInside = 0
468
469 OPEN getOutsidePostIdCursor
470 DECLARE @result time
471 FETCH NEXT FROM getOutsidePostIdCursor INTO @result
472 CLOSE getOutsidePostIdCursor
473 DEALLOCATE getOutsidePostIdCursor
474 RETURN @result
475END;
476GO
477
478IF OBJECT_ID (N'KN_301_Larin.Larin.getInsideData', N'FN') IS NOT NULL
479 DROP FUNCTION Larin.getOutsidePostId;
480GO
481
482CREATE FUNCTION Larin.getInsideData(@stateNumber varchar(9))
483RETURNS time
484AS
485BEGIN
486 DECLARE getOutsidePostIdCursor CURSOR FOR
487 SELECT crossingTime
488 FROM KN_301_Larin.Larin.TravelInformation
489 WHERE stateNumberId = Larin.getStateNumberId(@stateNumber) AND isInside = 1
490
491 OPEN getOutsidePostIdCursor
492 DECLARE @result time
493 FETCH NEXT FROM getOutsidePostIdCursor INTO @result
494 CLOSE getOutsidePostIdCursor
495 DEALLOCATE getOutsidePostIdCursor
496 RETURN @result
497END;
498GO
499
500IF OBJECT_ID (N'KN_301_Larin.Larin.isResident', N'FN') IS NOT NULL
501 DROP FUNCTION Larin.isResident;
502GO
503
504CREATE FUNCTION Larin.isResident(@stateNumberId int)
505RETURNS bit
506AS
507BEGIN
508 if (Larin.getRegionNumber(Larin.getStateNumber(@stateNumberId)) = 66)
509 RETURN 1
510 RETURN 0
511END;
512GO
513
514IF OBJECT_ID (N'KN_301_Larin.Larin.isTransit', N'FN') IS NOT NULL
515 DROP FUNCTION Larin.isTransit;
516GO
517
518CREATE FUNCTION Larin.isTransit(@stateNumberId int)
519RETURNS bit
520AS
521BEGIN
522 IF (Larin.isResident(@stateNumberId) = 0)
523 BEGIN
524 DECLARE @insidePostId tinyint = Larin.getInsidePostId(Larin.getStateNumber(@stateNumberId))
525 DECLARE @outsidePostId tinyint = Larin.getOutsidePostId(Larin.getStateNumber(@stateNumberId))
526 if (@insidePostId != @outsidePostId)
527 RETURN 1
528 END
529 RETURN 0
530END;
531GO
532
533IF OBJECT_ID (N'KN_301_Larin.Larin.isNonresident', N'FN') IS NOT NULL
534 DROP FUNCTION Larin.isNonresident;
535GO
536
537CREATE FUNCTION Larin.isNonresident(@stateNumberId int)
538RETURNS bit
539AS
540BEGIN
541 IF (Larin.isResident(@stateNumberId) = 0)
542 BEGIN
543 DECLARE @insidePostId tinyint = Larin.getInsidePostId(Larin.getStateNumber(@stateNumberId))
544 DECLARE @outsidePostId tinyint = Larin.getOutsidePostId(Larin.getStateNumber(@stateNumberId))
545 if (@insidePostId = @outsidePostId)
546 RETURN 1
547 END
548 RETURN 0
549END;
550GO
551
552INSERT INTO KN_301_Larin.Larin.TravelInformationForInsert (stateNumber, isInside, postId, crossingTime) VALUES
553 ('В725ХТ777', 1, 3, CONVERT(time, '0:5'))
554,('У130ЕА777', 0, 3, CONVERT(time, '0:10'))
555,('В771КВ777', 0, 1, CONVERT(time, '0:19'))
556,('Х424АХ66', 1, 1, CONVERT(time, '0:22'))
557,('Е700МВ77', 1, 1, CONVERT(time, '0:30'))
558,('Н677СО102', 1, 2, CONVERT(time, '0:39'))
559,('М642АА777', 1, 1, CONVERT(time, '0:41'))
560,('М233ХЕ66', 1, 2, CONVERT(time, '0:49'))
561,('Н649ХТ777', 1, 2, CONVERT(time, '0:50'))
562,('У671НО777', 0, 0, CONVERT(time, '0:59'))
563,('А587КЕ77', 0, 0, CONVERT(time, '1:1'))
564,('С886НЕ77', 1, 0, CONVERT(time, '1:10'))
565,('В771КВ777', 1, 1, CONVERT(time, '1:12'))
566,('У544ВН777', 0, 0, CONVERT(time, '1:17'))
567,('Е700МВ77', 1, 2, CONVERT(time, '1:22'))
568,('Н322ХЕ77', 1, 0, CONVERT(time, '1:23'))
569,('Е700МВ77', 1, 2, CONVERT(time, '1:26'))
570,('У730СВ177', 1, 3, CONVERT(time, '1:32'))
571,('О683РЕ66', 1, 0, CONVERT(time, '1:32'))
572,('С253УО66', 1, 0, CONVERT(time, '1:39'))
573,('Х891МУ102', 1, 3, CONVERT(time, '1:45'))
574,('М722СР66', 1, 0, CONVERT(time, '1:50'))
575,('М070РР77', 0, 2, CONVERT(time, '1:53'))
576,('К186ХМ66', 0, 2, CONVERT(time, '1:56'))
577,('М117ВР777', 1, 2, CONVERT(time, '2:3'))
578,('Н227СН02', 1, 2, CONVERT(time, '2:10'))
579,('Х329СВ66', 1, 1, CONVERT(time, '2:17'))
580,('М305ТА102', 1, 3, CONVERT(time, '2:20'))
581,('В771КВ777', 1, 2, CONVERT(time, '2:29'))
582,('С444РО77', 0, 1, CONVERT(time, '2:33'))
583,('С842ВМ66', 0, 3, CONVERT(time, '2:35'))
584,('Х891МУ102', 0, 0, CONVERT(time, '2:36'))
585,('У544ВН777', 1, 2, CONVERT(time, '2:43'))
586,('Х424АХ66', 0, 0, CONVERT(time, '2:46'))
587,('У544ВН777', 1, 1, CONVERT(time, '2:50'))
588,('В416МХ177', 0, 3, CONVERT(time, '2:53'))
589,('Х976РО77', 0, 3, CONVERT(time, '2:54'))
590,('Т732ЕС102', 1, 1, CONVERT(time, '2:59'))
591,('К787ОХ102', 0, 0, CONVERT(time, '3:4'))
592,('Е253ХХ66', 1, 0, CONVERT(time, '3:12'))
593,('О683РЕ66', 0, 1, CONVERT(time, '3:13'))
594,('О721СВ02', 0, 1, CONVERT(time, '3:22'))
595,('А631КН777', 1, 2, CONVERT(time, '3:23'))
596,('А593ЕХ66', 0, 1, CONVERT(time, '3:23'))
597,('Н044ВС66', 0, 0, CONVERT(time, '3:32'))
598,('О409ХК102', 1, 0, CONVERT(time, '3:36'))
599,('К485ОС177', 0, 3, CONVERT(time, '3:42'))
600,('Е665АТ177', 1, 1, CONVERT(time, '3:45'))
601,('О409ХК102', 0, 1, CONVERT(time, '3:49'))
602,('А393СЕ777', 0, 1, CONVERT(time, '3:55'))
603,('О409ХК102', 0, 3, CONVERT(time, '4:3'))
604,('Х329СВ66', 1, 2, CONVERT(time, '4:9'))
605,('О407УХ777', 0, 3, CONVERT(time, '4:15'))
606,('О601ВУ02', 1, 1, CONVERT(time, '4:21'))
607,('Т732ЕС102', 1, 1, CONVERT(time, '4:25'))
608,('Н544КТ77', 0, 2, CONVERT(time, '4:33'))
609,('Т034КВ02', 1, 2, CONVERT(time, '4:35'))
610,('М913ХН177', 0, 0, CONVERT(time, '4:38'))
611,('Т732ЕС102', 0, 3, CONVERT(time, '4:39'))
612,('Х329СВ66', 0, 0, CONVERT(time, '4:48'))
613,('Н592ХМ777', 1, 2, CONVERT(time, '4:54'))
614,('Е076ЕВ177', 1, 2, CONVERT(time, '5:3'))
615,('М913ХН177', 0, 0, CONVERT(time, '5:8'))
616,('В561ТН177', 1, 0, CONVERT(time, '5:16'))
617,('К361ВН102', 1, 2, CONVERT(time, '5:22'))
618,('Н544КТ77', 0, 1, CONVERT(time, '5:25'))
619,('Х891МУ102', 1, 0, CONVERT(time, '5:33'))
620,('Р292ХО66', 0, 1, CONVERT(time, '5:34'))
621,('У209СМ777', 1, 0, CONVERT(time, '5:38'))
622,('М225УУ777', 1, 1, CONVERT(time, '5:40'))
623,('Х329СВ66', 0, 2, CONVERT(time, '5:49'))
624,('К958МО66', 1, 1, CONVERT(time, '5:55'))
625,('Н649ХТ777', 1, 3, CONVERT(time, '5:57'))
626,('С416ТА102', 0, 3, CONVERT(time, '6:4'))
627,('А436ХО777', 0, 2, CONVERT(time, '6:5'))
628,('С444РО77', 0, 1, CONVERT(time, '6:7'))
629,('А593ЕХ66', 1, 1, CONVERT(time, '6:14'))
630,('К958МО66', 0, 2, CONVERT(time, '6:14'))
631,('К583НР02', 0, 2, CONVERT(time, '6:17'))
632,('А785ТН02', 0, 2, CONVERT(time, '6:20'))
633,('Х012РЕ102', 0, 2, CONVERT(time, '6:24'))
634,('А631КН777', 1, 0, CONVERT(time, '6:27'))
635,('С416ТА102', 1, 3, CONVERT(time, '6:36'))
636,('А587КЕ77', 1, 1, CONVERT(time, '6:42'))
637,('Н322ХЕ77', 1, 1, CONVERT(time, '6:49'))
638,('О906МВ777', 0, 2, CONVERT(time, '6:49'))
639,('Р983НМ777', 0, 2, CONVERT(time, '6:55'))
640,('Н255КК102', 0, 2, CONVERT(time, '6:55'))
641,('Р983НМ777', 0, 0, CONVERT(time, '7:3'))
642,('С842ВМ66', 1, 2, CONVERT(time, '7:10'))
643,('О135ТО177', 1, 1, CONVERT(time, '7:11'))
644,('С253УО66', 0, 1, CONVERT(time, '7:17'))
645,('О601ВУ02', 1, 0, CONVERT(time, '7:23'))
646,('Е700МВ77', 1, 1, CONVERT(time, '7:27'))
647,('С253УО66', 0, 1, CONVERT(time, '7:36'))
648,('Р544ОС777', 1, 1, CONVERT(time, '7:45'))
649,('С886НЕ77', 1, 0, CONVERT(time, '7:49'))
650,('В771КВ777', 0, 2, CONVERT(time, '7:55'))
651,('К485ОС177', 0, 1, CONVERT(time, '7:55'))
652,('К583НР02', 1, 3, CONVERT(time, '7:59'))
653,('В416МХ177', 0, 0, CONVERT(time, '8:6'))
654,('С416ТА102', 0, 0, CONVERT(time, '8:8'))
655,('У181АН66', 0, 0, CONVERT(time, '8:10'))
656,('Х703РН77', 0, 0, CONVERT(time, '8:12'))
657,('А194ОС66', 1, 1, CONVERT(time, '8:14'))
658,('К800МУ177', 0, 2, CONVERT(time, '8:15'))
659,('К485ОС177', 1, 0, CONVERT(time, '8:16'))
660,('Е253ХХ66', 0, 1, CONVERT(time, '8:16'))
661,('Х329СВ66', 0, 2, CONVERT(time, '8:21'))
662,('М786СС177', 1, 3, CONVERT(time, '8:28'))
663,('К186ХМ66', 0, 0, CONVERT(time, '8:37'))
664,('К485ОС177', 0, 2, CONVERT(time, '8:44'))
665,('М437МУ777', 1, 3, CONVERT(time, '8:46'))
666,('К186ХМ66', 0, 1, CONVERT(time, '8:50'))
667,('Х621ЕО66', 0, 0, CONVERT(time, '8:55'))
668,('Р931КВ177', 0, 2, CONVERT(time, '8:56'))
669,('К958МО66', 0, 2, CONVERT(time, '8:59'))
670,('У097МЕ102', 1, 1, CONVERT(time, '9:6'))
671,('К800МУ177', 1, 1, CONVERT(time, '9:9'))
672,('Е076ЕВ177', 0, 2, CONVERT(time, '9:12'))
673,('Х424АХ66', 0, 2, CONVERT(time, '9:20'))
674,('В561ТН177', 1, 2, CONVERT(time, '9:20'))
675,('А631КН777', 0, 0, CONVERT(time, '9:22'))
676,('Х621ЕО66', 1, 1, CONVERT(time, '9:29'))
677,('О601ВУ02', 0, 2, CONVERT(time, '9:36'))
678,('Х329СВ66', 0, 0, CONVERT(time, '9:40'))
679,('К223УС777', 1, 2, CONVERT(time, '9:46'))
680,('Т034КВ02', 0, 3, CONVERT(time, '9:47'))
681,('К787ОХ102', 1, 0, CONVERT(time, '9:47'))
682,('Н649ХТ777', 1, 0, CONVERT(time, '9:48'))
683,('У097МЕ102', 1, 3, CONVERT(time, '9:49'))
684,('Н544КТ77', 1, 3, CONVERT(time, '9:56'))
685,('Н771КН177', 1, 1, CONVERT(time, '10:5'))
686,('Х928УУ177', 1, 1, CONVERT(time, '10:13'))
687,('М722СР66', 0, 2, CONVERT(time, '10:14'))
688,('К800МУ177', 0, 1, CONVERT(time, '10:22'))
689,('В876ТЕ77', 1, 3, CONVERT(time, '10:31'))
690,('А371КМ02', 1, 3, CONVERT(time, '10:34'))
691,('С030ХЕ66', 1, 2, CONVERT(time, '10:41'))
692,('Е076ЕВ177', 1, 1, CONVERT(time, '10:50'))
693,('У671НО777', 0, 0, CONVERT(time, '10:54'))
694,('М070РР77', 1, 2, CONVERT(time, '10:59'))
695,('С886НЕ77', 1, 2, CONVERT(time, '11:4'))
696,('К583НР02', 0, 3, CONVERT(time, '11:6'))
697,('В416МХ177', 1, 0, CONVERT(time, '11:7'))
698,('Н028АЕ777', 0, 1, CONVERT(time, '11:7'))
699,('К787ОХ102', 1, 0, CONVERT(time, '11:16'))
700,('Н482НР177', 0, 3, CONVERT(time, '11:25'))
701,('М913ХН177', 1, 2, CONVERT(time, '11:33'))
702,('А936ТО66', 1, 3, CONVERT(time, '11:36'))
703,('А936ТО66', 1, 3, CONVERT(time, '11:41'))
704,('Х891МУ102', 1, 2, CONVERT(time, '11:43'))
705,('В416МХ177', 0, 0, CONVERT(time, '11:50'))
706,('Н482НР177', 0, 3, CONVERT(time, '11:53'))
707,('К485ОС177', 1, 0, CONVERT(time, '11:58'))
708,('Н482НР177', 0, 1, CONVERT(time, '12:2'))
709,('Н649ХТ777', 0, 1, CONVERT(time, '12:7'))
710,('Х891МУ102', 1, 1, CONVERT(time, '12:11'))
711,('М642АА777', 0, 3, CONVERT(time, '12:12'))
712,('С253УО66', 0, 0, CONVERT(time, '12:13'))
713,('Р292ХО66', 0, 0, CONVERT(time, '12:18'))
714,('А416ТТ102', 0, 2, CONVERT(time, '12:22'))
715,('Р983НМ777', 0, 1, CONVERT(time, '12:29'))
716,('У730СВ177', 0, 1, CONVERT(time, '12:32'))
717,('О683РЕ66', 0, 0, CONVERT(time, '12:35'))
718,('О721СВ02', 0, 2, CONVERT(time, '12:38'))
719,('В416МХ177', 0, 0, CONVERT(time, '12:46'))
720,('Н227СН02', 1, 0, CONVERT(time, '12:52'))
721,('Н592ХМ777', 1, 3, CONVERT(time, '12:58'))
722,('М225УУ777', 0, 0, CONVERT(time, '12:59'))
723,('М225УУ777', 0, 2, CONVERT(time, '13:8'))
724,('Х928УУ177', 1, 3, CONVERT(time, '13:9'))
725,('О601ВУ02', 0, 3, CONVERT(time, '13:18'))
726,('Х928УУ177', 0, 3, CONVERT(time, '13:23'))
727,('С253УО66', 1, 1, CONVERT(time, '13:32'))
728,('У097МЕ102', 1, 1, CONVERT(time, '13:38'))
729,('Н322ХЕ77', 1, 2, CONVERT(time, '13:44'))
730,('Н028АЕ777', 1, 1, CONVERT(time, '13:46'))
731,('Т391ВН02', 0, 3, CONVERT(time, '13:46'))
732,('В561ТН177', 1, 0, CONVERT(time, '13:53'))
733,('Х239АУ77', 1, 3, CONVERT(time, '14:2'))
734,('А194ОС66', 1, 3, CONVERT(time, '14:3'))
735,('В789АО77', 0, 0, CONVERT(time, '14:10'))
736,('А631КН777', 1, 1, CONVERT(time, '14:17'))
737,('Р931КВ177', 0, 2, CONVERT(time, '14:20'))
738,('Н592ХМ777', 1, 3, CONVERT(time, '14:23'))
739,('Х424АХ66', 0, 2, CONVERT(time, '14:23'))
740,('А785ТН02', 1, 3, CONVERT(time, '14:28'))
741,('Р544ОС777', 1, 3, CONVERT(time, '14:31'))
742,('М411СМ66', 1, 0, CONVERT(time, '14:34'))
743,('Т391ВН02', 1, 0, CONVERT(time, '14:36'))
744,('С253УО66', 1, 3, CONVERT(time, '14:40'))
745,('О407УХ777', 1, 1, CONVERT(time, '14:42'))
746,('К787ОХ102', 0, 0, CONVERT(time, '14:47'))
747,('К361ВН102', 0, 3, CONVERT(time, '14:51'))
748,('Е700МВ77', 0, 0, CONVERT(time, '14:51'))
749,('Р983НМ777', 1, 1, CONVERT(time, '15:0'))
750,('Х012РЕ102', 1, 3, CONVERT(time, '15:3'))
751,('В725ХТ777', 0, 1, CONVERT(time, '15:11'))
752,('О792НМ02', 1, 3, CONVERT(time, '15:13'))
753,('Н677СО102', 1, 1, CONVERT(time, '15:21'))
754,('О528ТХ66', 0, 0, CONVERT(time, '15:27'))
755,('Е253ХХ66', 0, 1, CONVERT(time, '15:30'))
756,('Н649ХТ777', 1, 0, CONVERT(time, '15:31'))
757,('Т391ВН02', 1, 1, CONVERT(time, '15:40'))
758,('Х424АХ66', 0, 1, CONVERT(time, '15:49'))
759,('А194ОС66', 0, 2, CONVERT(time, '15:57'))
760,('О528ТХ66', 0, 3, CONVERT(time, '16:2'))
761,('У130ЕА777', 1, 2, CONVERT(time, '16:5'))
762,('Н677СО102', 1, 2, CONVERT(time, '16:12'))
763,('Н592СЕ777', 0, 2, CONVERT(time, '16:16'))
764,('А436ХО777', 0, 3, CONVERT(time, '16:19'))
765,('У544ВН777', 1, 3, CONVERT(time, '16:25'))
766,('М722СР66', 0, 2, CONVERT(time, '16:26'))
767,('О288УВ102', 0, 2, CONVERT(time, '16:27'))
768,('М437МУ777', 0, 1, CONVERT(time, '16:35'))
769,('К787ОХ102', 0, 0, CONVERT(time, '16:43'))
770,('У544ВН777', 0, 1, CONVERT(time, '16:50'))
771,('М233ХЕ66', 1, 2, CONVERT(time, '16:56'))
772,('О135ТО177', 1, 0, CONVERT(time, '17:0'))
773,('О906МВ777', 0, 2, CONVERT(time, '17:1'))
774,('С842ВМ66', 1, 3, CONVERT(time, '17:1'))
775,('К361ВН102', 1, 2, CONVERT(time, '17:7'))
776,('К186ХМ66', 0, 0, CONVERT(time, '17:7'))
777,('С842ВМ66', 0, 0, CONVERT(time, '17:14'))
778,('Н255КК102', 0, 2, CONVERT(time, '17:23'))
779,('Т391ВН02', 1, 2, CONVERT(time, '17:28'))
780,('А785ТН02', 1, 3, CONVERT(time, '17:37'))
781,('С416ТА102', 0, 1, CONVERT(time, '17:43'))
782,('Т732ЕС102', 0, 0, CONVERT(time, '17:47'))
783,('У130ЕА777', 1, 3, CONVERT(time, '17:51'))
784,('М786СС177', 0, 2, CONVERT(time, '17:54'))
785,('А371КМ02', 1, 2, CONVERT(time, '18:2'))
786,('Т194АК777', 0, 2, CONVERT(time, '18:8'))
787,('К583НР02', 1, 2, CONVERT(time, '18:9'))
788,('М117ВР777', 1, 1, CONVERT(time, '18:17'))
789,('М411СМ66', 0, 2, CONVERT(time, '18:18'))
790,('М913ХН177', 0, 2, CONVERT(time, '18:22'))
791,('У097МЕ102', 1, 3, CONVERT(time, '18:31'))
792,('Н771КН177', 1, 0, CONVERT(time, '18:34'))
793,('А593ЕХ66', 0, 2, CONVERT(time, '18:42'))
794,('М786СС177', 1, 2, CONVERT(time, '18:43'))
795,('С842ВМ66', 0, 2, CONVERT(time, '18:47'))
796,('Т034КВ02', 0, 1, CONVERT(time, '18:47'))
797,('М722СР66', 1, 3, CONVERT(time, '18:47'))
798,('М642АА777', 0, 1, CONVERT(time, '18:48'))
799,('Р983НМ777', 1, 0, CONVERT(time, '18:48'))
800,('Х703РН77', 1, 0, CONVERT(time, '18:54'))
801,('М437МУ777', 0, 0, CONVERT(time, '18:55'))
802,('А371КМ02', 0, 3, CONVERT(time, '19:1'))
803,('А936ТО66', 1, 3, CONVERT(time, '19:10'))
804,('А936ТО66', 0, 3, CONVERT(time, '19:15'))
805,('Н028АЕ777', 0, 0, CONVERT(time, '19:22'))
806,('Х239АУ77', 1, 3, CONVERT(time, '19:25'))
807,('М233ХЕ66', 1, 3, CONVERT(time, '19:26'))
808,('В725ХТ777', 1, 1, CONVERT(time, '19:35'))
809,('А936ТО66', 0, 3, CONVERT(time, '19:39'))
810,('К958МО66', 0, 3, CONVERT(time, '19:39'))
811,('А785ТН02', 0, 0, CONVERT(time, '19:42'))
812,('Х703РН77', 0, 2, CONVERT(time, '19:51'))
813,('У770СС66', 1, 1, CONVERT(time, '19:58'))
814,('М642АА777', 1, 0, CONVERT(time, '20:2'))
815,('В771КВ777', 0, 2, CONVERT(time, '20:10'))
816,('Р544ОС777', 0, 1, CONVERT(time, '20:15'))
817,('О407УХ777', 0, 2, CONVERT(time, '20:23'))
818,('О906МВ777', 1, 0, CONVERT(time, '20:23'))
819,('О528ТХ66', 0, 2, CONVERT(time, '20:23'))
820,('Р931КВ177', 1, 3, CONVERT(time, '20:26'))
821,('К485ОС177', 1, 1, CONVERT(time, '20:28'))
822,('Р931КВ177', 0, 3, CONVERT(time, '20:31'))
823,('М411СМ66', 0, 3, CONVERT(time, '20:37'))
824,('О456ТО66', 1, 2, CONVERT(time, '20:37'))
825,('У209СМ777', 0, 3, CONVERT(time, '20:41'))
826,('О906МВ777', 1, 3, CONVERT(time, '20:49'))
827,('У544ВН777', 1, 3, CONVERT(time, '20:49'))
828,('Р931КВ177', 0, 1, CONVERT(time, '20:50'))
829,('Т034КВ02', 1, 2, CONVERT(time, '20:58'))
830,('Е950ЕР777', 0, 0, CONVERT(time, '21:2'))
831,('Р931КВ177', 1, 2, CONVERT(time, '21:4'))
832,('О792НМ02', 1, 3, CONVERT(time, '21:10'))
833,('О683РЕ66', 1, 3, CONVERT(time, '21:19'))
834,('М642АА777', 1, 3, CONVERT(time, '21:23'))
835,('В771КВ777', 0, 2, CONVERT(time, '21:25'))
836,('О683РЕ66', 0, 0, CONVERT(time, '21:30'))
837,('М411СМ66', 1, 2, CONVERT(time, '21:36'))
838,('Т034КВ02', 1, 3, CONVERT(time, '21:42'))
839,('Х891МУ102', 1, 0, CONVERT(time, '21:49'))
840,('Р544ОС777', 0, 0, CONVERT(time, '21:52'))
841,('Е665АТ177', 1, 1, CONVERT(time, '21:53'))
842,('Х928УУ177', 1, 1, CONVERT(time, '22:2'))
843,('М305ТА102', 1, 2, CONVERT(time, '22:4'))
844,('К787ОХ102', 0, 0, CONVERT(time, '22:7'))
845,('М305ТА102', 1, 2, CONVERT(time, '22:13'))
846,('О456ТО66', 1, 3, CONVERT(time, '22:19'))
847,('М722СР66', 1, 0, CONVERT(time, '22:25'))
848,('К485ОС177', 1, 1, CONVERT(time, '22:29'))
849,('Н044ВС66', 0, 3, CONVERT(time, '22:31'))
850,('Н592СЕ777', 0, 1, CONVERT(time, '22:35'))
851,('Х329СВ66', 0, 3, CONVERT(time, '22:38'))
852,('А785ТН02', 0, 3, CONVERT(time, '22:40'))
853,('Н592ХМ777', 1, 2, CONVERT(time, '22:47'))
854,('С253УО66', 0, 3, CONVERT(time, '22:51'))
855,('Х891МУ102', 0, 1, CONVERT(time, '22:51'))
856,('Е253ХХ66', 0, 2, CONVERT(time, '22:53'))
857,('Х239АУ77', 0, 3, CONVERT(time, '22:57'))
858,('М070РР77', 0, 0, CONVERT(time, '23:6'))
859,('Е937ХР777', 1, 0, CONVERT(time, '23:6'))
860,('А785ТН02', 1, 0, CONVERT(time, '23:12'))
861,('А936ТО66', 0, 1, CONVERT(time, '23:20'))
862,('О407УХ777', 0, 0, CONVERT(time, '23:20'))
863,('М225УУ777', 1, 1, CONVERT(time, '23:25'))
864,('Н677СО102', 0, 0, CONVERT(time, '23:32'))
865,('М411СМ66', 0, 0, CONVERT(time, '23:36'))
866,('Р544ОС777', 0, 1, CONVERT(time, '23:36'))
867,('К223УС777', 0, 2, CONVERT(time, '23:41'))
868,('В771КВ777', 0, 0, CONVERT(time, '23:47'))
869,('Н028АЕ777', 1, 1, CONVERT(time, '23:48'))
870,('У209СМ777', 0, 1, CONVERT(time, '23:51'))
871
872GO
873
874-- Иногородние автомобили
875CREATE VIEW NotResidentCars AS
876SELECT stateNumber as 'Гос. номер',
877 r.regionName as 'Регион',
878 Larin.getPostName(Larin.getInsidePostId(stateNumber)) as 'Въезд через пост',
879 Larin.getPostName(Larin.getOutsidePostId(stateNumber)) as 'Выезд через пост'
880FROM KN_301_Larin.Larin.StateNumberInformation as sni,
881 KN_301_Larin.Larin.Regions as r
882WHERE sni.regionNumber = r.regionNumber AND Larin.isNonresident(id) = 1
883GO
884
885-- Транзитные автомобили
886CREATE VIEW TransitCars AS
887SELECT stateNumber as 'Гос. номер',
888 r.regionName as 'Регион',
889 Larin.getPostName(Larin.getInsidePostId(stateNumber)) as 'Въезд через пост',
890 Larin.getPostName(Larin.getOutsidePostId(stateNumber)) as 'Выезд через пост'
891FROM KN_301_Larin.Larin.StateNumberInformation as sni,
892 KN_301_Larin.Larin.Regions as r
893WHERE sni.regionNumber = r.regionNumber AND Larin.isTransit(id) = 1
894GO
895
896--Местные атомобили
897CREATE VIEW LocalCars AS
898SELECT stateNumber as 'Гос. номер',
899 r.regionName as 'Регион'
900FROM KN_301_Larin.Larin.StateNumberInformation as sni,
901 KN_301_Larin.Larin.Regions as r
902WHERE r.regionNumber = '66'
903GO
904
905
906
907
908--Всего автомобилей
909CREATE VIEW AllCars AS
910SELECT count(*) AS 'Всего автомобилей'
911from KN_301_Larin.Larin.StateNumberInformation
912GO
913
914--Количество прочих автомобилей
915CREATE VIEW AnotherCars AS
916 SELECT COUNT(*) AS 'Количество других автомобилей'
917 from KN_301_Larin.Larin.StateNumberInformation as sni,
918 KN_301_Larin.Larin.Regions as r
919 WHERE sni.regionNumber = r.regionNumber AND Larin.isResident(sni.id) != 1 AND Larin.isTransit(sni.id) != 1 AND Larin.isNonresident(sni.id) != 1
920GO
921
922--Все автомобили
923CREATE VIEW AllCarsData AS
924 SELECT sni.stateNumber AS 'Гос номер',
925 r.regionName AS 'Регион',
926 Larin.getInsideData(sni.stateNumber) AS 'Время въезда',
927 Larin.getOutsideData(sni.stateNumber) AS 'Время выезда'
928 from KN_301_Larin.Larin.StateNumberInformation as sni,
929 KN_301_Larin.Larin.Regions as r,
930 KN_301_Larin.Larin.TravelInformation ti
931 WHERE sni.regionNumber = r.regionNumber AND ti.stateNumberId = sni.id
932 ORDER BY 'Регион'
933GO
934
935select * from AllCarsData