· 6 years ago · Nov 14, 2019, 05: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 NOT EXISTS(SELECT id
353 FROM KN_301_Larin.Larin.StateNumberInformation
354 WHERE stateNumber = UPPER(@stateNumber))
355 BEGIN
356 INSERT INTO KN_301_Larin.Larin.StateNumberInformation (stateNumber) VALUES
357 (UPPER(@stateNumber))
358 END
359
360 DECLARE tmpTableCursor CURSOR FOR
361 SELECT TOP 1 id
362 FROM KN_301_Larin.Larin.StateNumberInformation
363 WHERE stateNumber = UPPER(@stateNumber)
364 OPEN tmpTableCursor
365 DECLARE @stateNumberId INT
366 FETCH NEXT FROM tmpTableCursor INTO @stateNumberId
367 CLOSE tmpTableCursor
368 DEALLOCATE tmpTableCursor
369 IF (Larin.isCarInCity(@stateNumber) IS NULL OR Larin.isCarInCity(@stateNumber) <> @isInside
370 AND datediff(mi, Larin.getLastTravelTime(@stateNumber), @crossingTime) >= 5)
371 BEGIN
372 INSERT INTO KN_301_Larin.Larin.TravelInformation (stateNumberId, isInside, postId, crossingTime) VALUES
373 (@stateNumberId, @isInside, @postId, @crossingTime)
374 END
375 FETCH NEXT FROM travleCursor INTO @stateNumber, @isInside, @postId, @crossingTime
376 END
377
378 CLOSE travleCursor
379 DEALLOCATE travleCursor
380END
381GO
382
383
384
385
386IF OBJECT_ID (N'KN_301_Larin.Larin.getInsidePostId', N'FN') IS NOT NULL
387 DROP FUNCTION Larin.getInsidePostId;
388GO
389
390CREATE FUNCTION Larin.getInsidePostId(@stateNumber varchar(9))
391RETURNS tinyint
392AS
393BEGIN
394 DECLARE getInsidePostIdCursor CURSOR FOR
395 SELECT postId
396 FROM KN_301_Larin.Larin.TravelInformation
397 WHERE stateNumberId = Larin.getStateNumberId(@stateNumber) AND isInside = 1
398
399 OPEN getInsidePostIdCursor
400 DECLARE @result tinyint
401 FETCH NEXT FROM getInsidePostIdCursor INTO @result
402 CLOSE getInsidePostIdCursor
403 DEALLOCATE getInsidePostIdCursor
404 RETURN @result
405END;
406GO
407
408IF OBJECT_ID (N'KN_301_Larin.Larin.getPostName', N'FN') IS NOT NULL
409 DROP FUNCTION Larin.getPostName;
410GO
411
412CREATE FUNCTION Larin.getPostName(@postId tinyint)
413RETURNS varchar(30)
414AS
415BEGIN
416 DECLARE getInsidePostIdCursor CURSOR FOR
417 SELECT postName
418 FROM KN_301_Larin.Larin.Post
419 WHERE postId = @postId
420
421 OPEN getInsidePostIdCursor
422 DECLARE @result varchar(30)
423 FETCH NEXT FROM getInsidePostIdCursor INTO @result
424 CLOSE getInsidePostIdCursor
425 DEALLOCATE getInsidePostIdCursor
426 RETURN @result
427END;
428GO
429
430
431IF OBJECT_ID (N'KN_301_Larin.Larin.getOutsidePostId', N'FN') IS NOT NULL
432 DROP FUNCTION Larin.getOutsidePostId;
433GO
434
435CREATE FUNCTION Larin.getOutsidePostId(@stateNumber varchar(9))
436RETURNS tinyint
437AS
438BEGIN
439 DECLARE getOutsidePostIdCursor CURSOR FOR
440 SELECT postId
441 FROM KN_301_Larin.Larin.TravelInformation
442 WHERE stateNumberId = Larin.getStateNumberId(@stateNumber) AND isInside = 0
443
444 OPEN getOutsidePostIdCursor
445 DECLARE @result tinyint
446 FETCH NEXT FROM getOutsidePostIdCursor INTO @result
447 CLOSE getOutsidePostIdCursor
448 DEALLOCATE getOutsidePostIdCursor
449 RETURN @result
450END;
451GO
452
453IF OBJECT_ID (N'KN_301_Larin.Larin.isResident', N'FN') IS NOT NULL
454 DROP FUNCTION Larin.isResident;
455GO
456
457CREATE FUNCTION Larin.isResident(@stateNumberId int)
458RETURNS bit
459AS
460BEGIN
461 if (Larin.getRegionNumber(Larin.getStateNumber(@stateNumberId)) = 66)
462 RETURN 1
463 RETURN 0
464END;
465GO
466
467IF OBJECT_ID (N'KN_301_Larin.Larin.isTransit', N'FN') IS NOT NULL
468 DROP FUNCTION Larin.isTransit;
469GO
470
471CREATE FUNCTION Larin.isTransit(@stateNumberId int)
472RETURNS bit
473AS
474BEGIN
475 IF (Larin.isResident(@stateNumberId) = 0)
476 BEGIN
477 DECLARE @insidePostId tinyint = Larin.getInsidePostId(Larin.getStateNumber(@stateNumberId))
478 DECLARE @outsidePostId tinyint = Larin.getOutsidePostId(Larin.getStateNumber(@stateNumberId))
479 if (@insidePostId != @outsidePostId)
480 RETURN 1
481 END
482 RETURN 0
483END;
484GO
485
486IF OBJECT_ID (N'KN_301_Larin.Larin.isNonresident', N'FN') IS NOT NULL
487 DROP FUNCTION Larin.isNonresident;
488GO
489
490CREATE FUNCTION Larin.isNonresident(@stateNumberId int)
491RETURNS bit
492AS
493BEGIN
494 IF (Larin.isResident(@stateNumberId) = 0)
495 BEGIN
496 DECLARE @insidePostId tinyint = Larin.getInsidePostId(Larin.getStateNumber(@stateNumberId))
497 DECLARE @outsidePostId tinyint = Larin.getOutsidePostId(Larin.getStateNumber(@stateNumberId))
498 if (@insidePostId = @outsidePostId)
499 RETURN 1
500 END
501 RETURN 0
502END;
503GO
504
505INSERT INTO KN_301_Larin.Larin.TravelInformationForInsert (stateNumber, isInside, postId, crossingTime) VALUES
506 ('В725ХТ777', 1, 3, CONVERT(time, '0:5'))
507,('У130ЕА777', 0, 3, CONVERT(time, '0:10'))
508,('В771КВ777', 0, 1, CONVERT(time, '0:19'))
509,('Х424АХ66', 1, 1, CONVERT(time, '0:22'))
510,('Е700МВ77', 1, 1, CONVERT(time, '0:30'))
511,('Н677СО102', 1, 2, CONVERT(time, '0:39'))
512,('М642АА777', 1, 1, CONVERT(time, '0:41'))
513,('М233ХЕ66', 1, 2, CONVERT(time, '0:49'))
514,('Н649ХТ777', 1, 2, CONVERT(time, '0:50'))
515,('У671НО777', 0, 0, CONVERT(time, '0:59'))
516,('А587КЕ77', 0, 0, CONVERT(time, '1:1'))
517,('С886НЕ77', 1, 0, CONVERT(time, '1:10'))
518,('В771КВ777', 1, 1, CONVERT(time, '1:12'))
519,('У544ВН777', 0, 0, CONVERT(time, '1:17'))
520,('Е700МВ77', 1, 2, CONVERT(time, '1:22'))
521,('Н322ХЕ77', 1, 0, CONVERT(time, '1:23'))
522,('Е700МВ77', 1, 2, CONVERT(time, '1:26'))
523,('У730СВ177', 1, 3, CONVERT(time, '1:32'))
524,('О683РЕ66', 1, 0, CONVERT(time, '1:32'))
525,('С253УО66', 1, 0, CONVERT(time, '1:39'))
526,('Х891МУ102', 1, 3, CONVERT(time, '1:45'))
527,('М722СР66', 1, 0, CONVERT(time, '1:50'))
528,('М070РР77', 0, 2, CONVERT(time, '1:53'))
529,('К186ХМ66', 0, 2, CONVERT(time, '1:56'))
530,('М117ВР777', 1, 2, CONVERT(time, '2:3'))
531,('Н227СН02', 1, 2, CONVERT(time, '2:10'))
532,('Х329СВ66', 1, 1, CONVERT(time, '2:17'))
533,('М305ТА102', 1, 3, CONVERT(time, '2:20'))
534,('В771КВ777', 1, 2, CONVERT(time, '2:29'))
535,('С444РО77', 0, 1, CONVERT(time, '2:33'))
536,('С842ВМ66', 0, 3, CONVERT(time, '2:35'))
537,('Х891МУ102', 0, 0, CONVERT(time, '2:36'))
538,('У544ВН777', 1, 2, CONVERT(time, '2:43'))
539,('Х424АХ66', 0, 0, CONVERT(time, '2:46'))
540,('У544ВН777', 1, 1, CONVERT(time, '2:50'))
541,('В416МХ177', 0, 3, CONVERT(time, '2:53'))
542,('Х976РО77', 0, 3, CONVERT(time, '2:54'))
543,('Т732ЕС102', 1, 1, CONVERT(time, '2:59'))
544,('К787ОХ102', 0, 0, CONVERT(time, '3:4'))
545,('Е253ХХ66', 1, 0, CONVERT(time, '3:12'))
546,('О683РЕ66', 0, 1, CONVERT(time, '3:13'))
547,('О721СВ02', 0, 1, CONVERT(time, '3:22'))
548,('А631КН777', 1, 2, CONVERT(time, '3:23'))
549,('А593ЕХ66', 0, 1, CONVERT(time, '3:23'))
550,('Н044ВС66', 0, 0, CONVERT(time, '3:32'))
551,('О409ХК102', 1, 0, CONVERT(time, '3:36'))
552,('К485ОС177', 0, 3, CONVERT(time, '3:42'))
553,('Е665АТ177', 1, 1, CONVERT(time, '3:45'))
554,('О409ХК102', 0, 1, CONVERT(time, '3:49'))
555,('А393СЕ777', 0, 1, CONVERT(time, '3:55'))
556,('О409ХК102', 0, 3, CONVERT(time, '4:3'))
557,('Х329СВ66', 1, 2, CONVERT(time, '4:9'))
558,('О407УХ777', 0, 3, CONVERT(time, '4:15'))
559,('О601ВУ02', 1, 1, CONVERT(time, '4:21'))
560,('Т732ЕС102', 1, 1, CONVERT(time, '4:25'))
561,('Н544КТ77', 0, 2, CONVERT(time, '4:33'))
562,('Т034КВ02', 1, 2, CONVERT(time, '4:35'))
563,('М913ХН177', 0, 0, CONVERT(time, '4:38'))
564,('Т732ЕС102', 0, 3, CONVERT(time, '4:39'))
565,('Х329СВ66', 0, 0, CONVERT(time, '4:48'))
566,('Н592ХМ777', 1, 2, CONVERT(time, '4:54'))
567,('Е076ЕВ177', 1, 2, CONVERT(time, '5:3'))
568,('М913ХН177', 0, 0, CONVERT(time, '5:8'))
569,('В561ТН177', 1, 0, CONVERT(time, '5:16'))
570,('К361ВН102', 1, 2, CONVERT(time, '5:22'))
571,('Н544КТ77', 0, 1, CONVERT(time, '5:25'))
572,('Х891МУ102', 1, 0, CONVERT(time, '5:33'))
573,('Р292ХО66', 0, 1, CONVERT(time, '5:34'))
574,('У209СМ777', 1, 0, CONVERT(time, '5:38'))
575,('М225УУ777', 1, 1, CONVERT(time, '5:40'))
576,('Х329СВ66', 0, 2, CONVERT(time, '5:49'))
577,('К958МО66', 1, 1, CONVERT(time, '5:55'))
578,('Н649ХТ777', 1, 3, CONVERT(time, '5:57'))
579,('С416ТА102', 0, 3, CONVERT(time, '6:4'))
580,('А436ХО777', 0, 2, CONVERT(time, '6:5'))
581,('С444РО77', 0, 1, CONVERT(time, '6:7'))
582,('А593ЕХ66', 1, 1, CONVERT(time, '6:14'))
583,('К958МО66', 0, 2, CONVERT(time, '6:14'))
584,('К583НР02', 0, 2, CONVERT(time, '6:17'))
585,('А785ТН02', 0, 2, CONVERT(time, '6:20'))
586,('Х012РЕ102', 0, 2, CONVERT(time, '6:24'))
587,('А631КН777', 1, 0, CONVERT(time, '6:27'))
588,('С416ТА102', 1, 3, CONVERT(time, '6:36'))
589,('А587КЕ77', 1, 1, CONVERT(time, '6:42'))
590,('Н322ХЕ77', 1, 1, CONVERT(time, '6:49'))
591,('О906МВ777', 0, 2, CONVERT(time, '6:49'))
592,('Р983НМ777', 0, 2, CONVERT(time, '6:55'))
593,('Н255КК102', 0, 2, CONVERT(time, '6:55'))
594,('Р983НМ777', 0, 0, CONVERT(time, '7:3'))
595,('С842ВМ66', 1, 2, CONVERT(time, '7:10'))
596,('О135ТО177', 1, 1, CONVERT(time, '7:11'))
597,('С253УО66', 0, 1, CONVERT(time, '7:17'))
598,('О601ВУ02', 1, 0, CONVERT(time, '7:23'))
599,('Е700МВ77', 1, 1, CONVERT(time, '7:27'))
600,('С253УО66', 0, 1, CONVERT(time, '7:36'))
601,('Р544ОС777', 1, 1, CONVERT(time, '7:45'))
602,('С886НЕ77', 1, 0, CONVERT(time, '7:49'))
603,('В771КВ777', 0, 2, CONVERT(time, '7:55'))
604,('К485ОС177', 0, 1, CONVERT(time, '7:55'))
605,('К583НР02', 1, 3, CONVERT(time, '7:59'))
606,('В416МХ177', 0, 0, CONVERT(time, '8:6'))
607,('С416ТА102', 0, 0, CONVERT(time, '8:8'))
608,('У181АН66', 0, 0, CONVERT(time, '8:10'))
609,('Х703РН77', 0, 0, CONVERT(time, '8:12'))
610,('А194ОС66', 1, 1, CONVERT(time, '8:14'))
611,('К800МУ177', 0, 2, CONVERT(time, '8:15'))
612,('К485ОС177', 1, 0, CONVERT(time, '8:16'))
613,('Е253ХХ66', 0, 1, CONVERT(time, '8:16'))
614,('Х329СВ66', 0, 2, CONVERT(time, '8:21'))
615,('М786СС177', 1, 3, CONVERT(time, '8:28'))
616,('К186ХМ66', 0, 0, CONVERT(time, '8:37'))
617,('К485ОС177', 0, 2, CONVERT(time, '8:44'))
618,('М437МУ777', 1, 3, CONVERT(time, '8:46'))
619,('К186ХМ66', 0, 1, CONVERT(time, '8:50'))
620,('Х621ЕО66', 0, 0, CONVERT(time, '8:55'))
621,('Р931КВ177', 0, 2, CONVERT(time, '8:56'))
622,('К958МО66', 0, 2, CONVERT(time, '8:59'))
623,('У097МЕ102', 1, 1, CONVERT(time, '9:6'))
624,('К800МУ177', 1, 1, CONVERT(time, '9:9'))
625,('Е076ЕВ177', 0, 2, CONVERT(time, '9:12'))
626,('Х424АХ66', 0, 2, CONVERT(time, '9:20'))
627,('В561ТН177', 1, 2, CONVERT(time, '9:20'))
628,('А631КН777', 0, 0, CONVERT(time, '9:22'))
629,('Х621ЕО66', 1, 1, CONVERT(time, '9:29'))
630,('О601ВУ02', 0, 2, CONVERT(time, '9:36'))
631,('Х329СВ66', 0, 0, CONVERT(time, '9:40'))
632,('К223УС777', 1, 2, CONVERT(time, '9:46'))
633,('Т034КВ02', 0, 3, CONVERT(time, '9:47'))
634,('К787ОХ102', 1, 0, CONVERT(time, '9:47'))
635,('Н649ХТ777', 1, 0, CONVERT(time, '9:48'))
636,('У097МЕ102', 1, 3, CONVERT(time, '9:49'))
637,('Н544КТ77', 1, 3, CONVERT(time, '9:56'))
638,('Н771КН177', 1, 1, CONVERT(time, '10:5'))
639,('Х928УУ177', 1, 1, CONVERT(time, '10:13'))
640,('М722СР66', 0, 2, CONVERT(time, '10:14'))
641,('К800МУ177', 0, 1, CONVERT(time, '10:22'))
642,('В876ТЕ77', 1, 3, CONVERT(time, '10:31'))
643,('А371КМ02', 1, 3, CONVERT(time, '10:34'))
644,('С030ХЕ66', 1, 2, CONVERT(time, '10:41'))
645,('Е076ЕВ177', 1, 1, CONVERT(time, '10:50'))
646,('У671НО777', 0, 0, CONVERT(time, '10:54'))
647,('М070РР77', 1, 2, CONVERT(time, '10:59'))
648,('С886НЕ77', 1, 2, CONVERT(time, '11:4'))
649,('К583НР02', 0, 3, CONVERT(time, '11:6'))
650,('В416МХ177', 1, 0, CONVERT(time, '11:7'))
651,('Н028АЕ777', 0, 1, CONVERT(time, '11:7'))
652,('К787ОХ102', 1, 0, CONVERT(time, '11:16'))
653,('Н482НР177', 0, 3, CONVERT(time, '11:25'))
654,('М913ХН177', 1, 2, CONVERT(time, '11:33'))
655,('А936ТО66', 1, 3, CONVERT(time, '11:36'))
656,('А936ТО66', 1, 3, CONVERT(time, '11:41'))
657,('Х891МУ102', 1, 2, CONVERT(time, '11:43'))
658,('В416МХ177', 0, 0, CONVERT(time, '11:50'))
659,('Н482НР177', 0, 3, CONVERT(time, '11:53'))
660,('К485ОС177', 1, 0, CONVERT(time, '11:58'))
661,('Н482НР177', 0, 1, CONVERT(time, '12:2'))
662,('Н649ХТ777', 0, 1, CONVERT(time, '12:7'))
663,('Х891МУ102', 1, 1, CONVERT(time, '12:11'))
664,('М642АА777', 0, 3, CONVERT(time, '12:12'))
665,('С253УО66', 0, 0, CONVERT(time, '12:13'))
666,('Р292ХО66', 0, 0, CONVERT(time, '12:18'))
667,('А416ТТ102', 0, 2, CONVERT(time, '12:22'))
668,('Р983НМ777', 0, 1, CONVERT(time, '12:29'))
669,('У730СВ177', 0, 1, CONVERT(time, '12:32'))
670,('О683РЕ66', 0, 0, CONVERT(time, '12:35'))
671,('О721СВ02', 0, 2, CONVERT(time, '12:38'))
672,('В416МХ177', 0, 0, CONVERT(time, '12:46'))
673,('Н227СН02', 1, 0, CONVERT(time, '12:52'))
674,('Н592ХМ777', 1, 3, CONVERT(time, '12:58'))
675,('М225УУ777', 0, 0, CONVERT(time, '12:59'))
676,('М225УУ777', 0, 2, CONVERT(time, '13:8'))
677,('Х928УУ177', 1, 3, CONVERT(time, '13:9'))
678,('О601ВУ02', 0, 3, CONVERT(time, '13:18'))
679,('Х928УУ177', 0, 3, CONVERT(time, '13:23'))
680,('С253УО66', 1, 1, CONVERT(time, '13:32'))
681,('У097МЕ102', 1, 1, CONVERT(time, '13:38'))
682,('Н322ХЕ77', 1, 2, CONVERT(time, '13:44'))
683,('Н028АЕ777', 1, 1, CONVERT(time, '13:46'))
684,('Т391ВН02', 0, 3, CONVERT(time, '13:46'))
685,('В561ТН177', 1, 0, CONVERT(time, '13:53'))
686,('Х239АУ77', 1, 3, CONVERT(time, '14:2'))
687,('А194ОС66', 1, 3, CONVERT(time, '14:3'))
688,('В789АО77', 0, 0, CONVERT(time, '14:10'))
689,('А631КН777', 1, 1, CONVERT(time, '14:17'))
690,('Р931КВ177', 0, 2, CONVERT(time, '14:20'))
691,('Н592ХМ777', 1, 3, CONVERT(time, '14:23'))
692,('Х424АХ66', 0, 2, CONVERT(time, '14:23'))
693,('А785ТН02', 1, 3, CONVERT(time, '14:28'))
694,('Р544ОС777', 1, 3, CONVERT(time, '14:31'))
695,('М411СМ66', 1, 0, CONVERT(time, '14:34'))
696,('Т391ВН02', 1, 0, CONVERT(time, '14:36'))
697,('С253УО66', 1, 3, CONVERT(time, '14:40'))
698,('О407УХ777', 1, 1, CONVERT(time, '14:42'))
699,('К787ОХ102', 0, 0, CONVERT(time, '14:47'))
700,('К361ВН102', 0, 3, CONVERT(time, '14:51'))
701,('Е700МВ77', 0, 0, CONVERT(time, '14:51'))
702,('Р983НМ777', 1, 1, CONVERT(time, '15:0'))
703,('Х012РЕ102', 1, 3, CONVERT(time, '15:3'))
704,('В725ХТ777', 0, 1, CONVERT(time, '15:11'))
705,('О792НМ02', 1, 3, CONVERT(time, '15:13'))
706,('Н677СО102', 1, 1, CONVERT(time, '15:21'))
707,('О528ТХ66', 0, 0, CONVERT(time, '15:27'))
708,('Е253ХХ66', 0, 1, CONVERT(time, '15:30'))
709,('Н649ХТ777', 1, 0, CONVERT(time, '15:31'))
710,('Т391ВН02', 1, 1, CONVERT(time, '15:40'))
711,('Х424АХ66', 0, 1, CONVERT(time, '15:49'))
712,('А194ОС66', 0, 2, CONVERT(time, '15:57'))
713,('О528ТХ66', 0, 3, CONVERT(time, '16:2'))
714,('У130ЕА777', 1, 2, CONVERT(time, '16:5'))
715,('Н677СО102', 1, 2, CONVERT(time, '16:12'))
716,('Н592СЕ777', 0, 2, CONVERT(time, '16:16'))
717,('А436ХО777', 0, 3, CONVERT(time, '16:19'))
718,('У544ВН777', 1, 3, CONVERT(time, '16:25'))
719,('М722СР66', 0, 2, CONVERT(time, '16:26'))
720,('О288УВ102', 0, 2, CONVERT(time, '16:27'))
721,('М437МУ777', 0, 1, CONVERT(time, '16:35'))
722,('К787ОХ102', 0, 0, CONVERT(time, '16:43'))
723,('У544ВН777', 0, 1, CONVERT(time, '16:50'))
724,('М233ХЕ66', 1, 2, CONVERT(time, '16:56'))
725,('О135ТО177', 1, 0, CONVERT(time, '17:0'))
726,('О906МВ777', 0, 2, CONVERT(time, '17:1'))
727,('С842ВМ66', 1, 3, CONVERT(time, '17:1'))
728,('К361ВН102', 1, 2, CONVERT(time, '17:7'))
729,('К186ХМ66', 0, 0, CONVERT(time, '17:7'))
730,('С842ВМ66', 0, 0, CONVERT(time, '17:14'))
731,('Н255КК102', 0, 2, CONVERT(time, '17:23'))
732,('Т391ВН02', 1, 2, CONVERT(time, '17:28'))
733,('А785ТН02', 1, 3, CONVERT(time, '17:37'))
734,('С416ТА102', 0, 1, CONVERT(time, '17:43'))
735,('Т732ЕС102', 0, 0, CONVERT(time, '17:47'))
736,('У130ЕА777', 1, 3, CONVERT(time, '17:51'))
737,('М786СС177', 0, 2, CONVERT(time, '17:54'))
738,('А371КМ02', 1, 2, CONVERT(time, '18:2'))
739,('Т194АК777', 0, 2, CONVERT(time, '18:8'))
740,('К583НР02', 1, 2, CONVERT(time, '18:9'))
741,('М117ВР777', 1, 1, CONVERT(time, '18:17'))
742,('М411СМ66', 0, 2, CONVERT(time, '18:18'))
743,('М913ХН177', 0, 2, CONVERT(time, '18:22'))
744,('У097МЕ102', 1, 3, CONVERT(time, '18:31'))
745,('Н771КН177', 1, 0, CONVERT(time, '18:34'))
746,('А593ЕХ66', 0, 2, CONVERT(time, '18:42'))
747,('М786СС177', 1, 2, CONVERT(time, '18:43'))
748,('С842ВМ66', 0, 2, CONVERT(time, '18:47'))
749,('Т034КВ02', 0, 1, CONVERT(time, '18:47'))
750,('М722СР66', 1, 3, CONVERT(time, '18:47'))
751,('М642АА777', 0, 1, CONVERT(time, '18:48'))
752,('Р983НМ777', 1, 0, CONVERT(time, '18:48'))
753,('Х703РН77', 1, 0, CONVERT(time, '18:54'))
754,('М437МУ777', 0, 0, CONVERT(time, '18:55'))
755,('А371КМ02', 0, 3, CONVERT(time, '19:1'))
756,('А936ТО66', 1, 3, CONVERT(time, '19:10'))
757,('А936ТО66', 0, 3, CONVERT(time, '19:15'))
758,('Н028АЕ777', 0, 0, CONVERT(time, '19:22'))
759,('Х239АУ77', 1, 3, CONVERT(time, '19:25'))
760,('М233ХЕ66', 1, 3, CONVERT(time, '19:26'))
761,('В725ХТ777', 1, 1, CONVERT(time, '19:35'))
762,('А936ТО66', 0, 3, CONVERT(time, '19:39'))
763,('К958МО66', 0, 3, CONVERT(time, '19:39'))
764,('А785ТН02', 0, 0, CONVERT(time, '19:42'))
765,('Х703РН77', 0, 2, CONVERT(time, '19:51'))
766,('У770СС66', 1, 1, CONVERT(time, '19:58'))
767,('М642АА777', 1, 0, CONVERT(time, '20:2'))
768,('В771КВ777', 0, 2, CONVERT(time, '20:10'))
769,('Р544ОС777', 0, 1, CONVERT(time, '20:15'))
770,('О407УХ777', 0, 2, CONVERT(time, '20:23'))
771,('О906МВ777', 1, 0, CONVERT(time, '20:23'))
772,('О528ТХ66', 0, 2, CONVERT(time, '20:23'))
773,('Р931КВ177', 1, 3, CONVERT(time, '20:26'))
774,('К485ОС177', 1, 1, CONVERT(time, '20:28'))
775,('Р931КВ177', 0, 3, CONVERT(time, '20:31'))
776,('М411СМ66', 0, 3, CONVERT(time, '20:37'))
777,('О456ТО66', 1, 2, CONVERT(time, '20:37'))
778,('У209СМ777', 0, 3, CONVERT(time, '20:41'))
779,('О906МВ777', 1, 3, CONVERT(time, '20:49'))
780,('У544ВН777', 1, 3, CONVERT(time, '20:49'))
781,('Р931КВ177', 0, 1, CONVERT(time, '20:50'))
782,('Т034КВ02', 1, 2, CONVERT(time, '20:58'))
783,('Е950ЕР777', 0, 0, CONVERT(time, '21:2'))
784,('Р931КВ177', 1, 2, CONVERT(time, '21:4'))
785,('О792НМ02', 1, 3, CONVERT(time, '21:10'))
786,('О683РЕ66', 1, 3, CONVERT(time, '21:19'))
787,('М642АА777', 1, 3, CONVERT(time, '21:23'))
788,('В771КВ777', 0, 2, CONVERT(time, '21:25'))
789,('О683РЕ66', 0, 0, CONVERT(time, '21:30'))
790,('М411СМ66', 1, 2, CONVERT(time, '21:36'))
791,('Т034КВ02', 1, 3, CONVERT(time, '21:42'))
792,('Х891МУ102', 1, 0, CONVERT(time, '21:49'))
793,('Р544ОС777', 0, 0, CONVERT(time, '21:52'))
794,('Е665АТ177', 1, 1, CONVERT(time, '21:53'))
795,('Х928УУ177', 1, 1, CONVERT(time, '22:2'))
796,('М305ТА102', 1, 2, CONVERT(time, '22:4'))
797,('К787ОХ102', 0, 0, CONVERT(time, '22:7'))
798,('М305ТА102', 1, 2, CONVERT(time, '22:13'))
799,('О456ТО66', 1, 3, CONVERT(time, '22:19'))
800,('М722СР66', 1, 0, CONVERT(time, '22:25'))
801,('К485ОС177', 1, 1, CONVERT(time, '22:29'))
802,('Н044ВС66', 0, 3, CONVERT(time, '22:31'))
803,('Н592СЕ777', 0, 1, CONVERT(time, '22:35'))
804,('Х329СВ66', 0, 3, CONVERT(time, '22:38'))
805,('А785ТН02', 0, 3, CONVERT(time, '22:40'))
806,('Н592ХМ777', 1, 2, CONVERT(time, '22:47'))
807,('С253УО66', 0, 3, CONVERT(time, '22:51'))
808,('Х891МУ102', 0, 1, CONVERT(time, '22:51'))
809,('Е253ХХ66', 0, 2, CONVERT(time, '22:53'))
810,('Х239АУ77', 0, 3, CONVERT(time, '22:57'))
811,('М070РР77', 0, 0, CONVERT(time, '23:6'))
812,('Е937ХР777', 1, 0, CONVERT(time, '23:6'))
813,('А785ТН02', 1, 0, CONVERT(time, '23:12'))
814,('А936ТО66', 0, 1, CONVERT(time, '23:20'))
815,('О407УХ777', 0, 0, CONVERT(time, '23:20'))
816,('М225УУ777', 1, 1, CONVERT(time, '23:25'))
817,('Н677СО102', 0, 0, CONVERT(time, '23:32'))
818,('М411СМ66', 0, 0, CONVERT(time, '23:36'))
819,('Р544ОС777', 0, 1, CONVERT(time, '23:36'))
820,('К223УС777', 0, 2, CONVERT(time, '23:41'))
821,('В771КВ777', 0, 0, CONVERT(time, '23:47'))
822,('Н028АЕ777', 1, 1, CONVERT(time, '23:48'))
823,('У209СМ777', 0, 1, CONVERT(time, '23:51'))
824
825GO
826
827-- Иногородние автомобили
828SELECT stateNumber as 'Гос. номер',
829 r.regionName as 'Регион',
830 Larin.getPostName(Larin.getInsidePostId(stateNumber)) as 'Въезд через пост',
831 Larin.getPostName(Larin.getOutsidePostId(stateNumber)) as 'Выезд через пост'
832FROM KN_301_Larin.Larin.StateNumberInformation as sni,
833 KN_301_Larin.Larin.Regions as r
834WHERE sni.regionNumber = r.regionNumber AND Larin.isNonresident(id) = 1
835
836-- Транзитные автомобили
837SELECT stateNumber as 'Гос. номер',
838 r.regionName as 'Регион',
839 Larin.getPostName(Larin.getInsidePostId(stateNumber)) as 'Въезд через пост',
840 Larin.getPostName(Larin.getOutsidePostId(stateNumber)) as 'Выезд через пост'
841FROM KN_301_Larin.Larin.StateNumberInformation as sni,
842 KN_301_Larin.Larin.Regions as r
843WHERE sni.regionNumber = r.regionNumber AND Larin.isTransit(id) = 1
844
845-- Список всех номеров
846SELECT stateNumber as 'Гос. номер',
847 r.regionName as 'Регион'
848FROM KN_301_Larin.Larin.StateNumberInformation s,
849 KN_301_Larin.Larin.Regions r
850WHERE r.regionNumber = s.regionNumber
851ORDER BY stateNumber
852
853-- Выехали через северный пост
854SELECT stateNumber as 'Гос. номер',
855 r.regionName as 'Регион'
856FROM KN_301_Larin.Larin.StateNumberInformation s,
857 KN_301_Larin.Larin.Regions r
858WHERE r.regionNumber = s.regionNumber AND Larin.getOutsidePostId(s.stateNumber) = 1
859ORDER BY stateNumber
860
861-- ВЪехали через серверный пост
862SELECT stateNumber as 'Гос. номер',
863 r.regionName as 'Регион'
864FROM KN_301_Larin.Larin.StateNumberInformation s,
865 KN_301_Larin.Larin.Regions r
866WHERE r.regionNumber = s.regionNumber AND Larin.getInsidePostId(s.stateNumber) = 1
867ORDER BY stateNumber
868GO
869
870CREATE VIEW NorthPostData AS
871SELECT sni.stateNumber AS [Гос. номер],
872 r.regionName AS [Регион],
873 ti.crossingTime AS [Время пересечения границы],
874 Larin.formatDirection(isInside) AS [Направление движения]
875FROM KN_301_Larin.Larin.TravelInformation ti,
876KN_301_Larin.Larin.StateNumberInformation sni,
877KN_301_Larin.Larin.Regions r
878WHERE ti.postId = 1 AND sni.id = ti.stateNumberId AND r.regionNumber = sni.regionNumber
879GO
880
881
882SELECT * FROM NorthPostData