Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Transact-SQL @CURSOR
|
|||
|---|---|---|---|
|
#18+
Господа, доброго времени суток! Мне нужна ваша помощь! задача: есть 2 таблицы 1. Unit (ключевые поля) id int (айди юнита) ShortName VARCHAR(10) и 2. Position (ключевые поля) MngUnit int not NULL TimeStamp datatime IPO int (два значения 0 или 1) у каждого юнита есть трекинг по GPS соотв долгота и широта и время контрольной точки (поле TimeStamp), так же есть статус онлайн или оффлайн (IPO) нужно назначить курсор с перебором ВСЕХ айди начиная с 1 и по FEENCH=0 таким образом, чтобы: 1. найти первую строку(первое вхождение) где юнит оффлайн (IPO = 0) и назначить переменной @TP(--TimePast) значение времени TimeStamp. 2. далее если а. следующая строка оффлайн (IPO = 0), то вычленить разницу времени таким образом (@TR(--TimeReal) = TimeStamp) - @TP = @TS (--TimeSum) б. следующая строка онлайн (IPO = 1) И уравнение ИСТИНА ((@TR(--TimeReal) = TimeStamp) - @TP > 15 (--seconds)) ТО ((@TR(--TimeReal) = TimeStamp) - @TP = @TS), ЕСЛИ разница менее 15 секунд, то (@TR = @TP ) или просто перейти на сл строку безобновлений переменных. когда кончатся строки по данному айди юнита, нужно увидеть суммарное время оффлайна по выше написанным критериям. и соответственно внести их в таблицу TimeOfflineUnit поле unit_id = u.ShortName и TimeOfflane = @TS (для каждого юнита свое значение) при переходе на сл айди соотв переменные @TS = 0, @TP = поля TimeStamp, первой строке с критерием поля IPO = 0 у меня пока (5-е сутки) получилось нечто не очень понятное... но все же. переменные: @TP -- Прошлое время, поле TimeStamp, пред-идущая строка этого айди @TR -- Реальное время, поле TimeStamp, текущая строка этого айди @TS -- Суммарное время, которое пойдет в итоговую таблицу вывода. @UID -- Айди юнита на текущий период поиска (от 1 и до n..) должны быть еще переменные, но какие точно пока не могу понять в итога должно получиться что то вроде прикрепил файл. 1 и 2 представлены, 3 итог. ----------------------------------------------------------------------------- DECLARE @IDch int = 2104 --для теста взял конкретный айди SELECT u.ShortName as Unit_ID, p.TimeStamp, p.IPO from [dbo].[Unit] u INNER JOIN [dbo].[Position] p ON p.MngUnit = u.id WHERE u.id = @IDch ----------------------------------------------------------------------------- в начале должно быть что то вида CREATE TABLE TimeOfflineUnit id int Unit_Id VARCHAR (10) TimeOffline time(2) primary key ('id') в конце дроп. БУДУ ПРИМНОЖЕСТВЕННО благодарен за помощь в разборке или написания курсора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 21:04 |
|
||
|
Transact-SQL @CURSOR
|
|||
|---|---|---|---|
|
#18+
Курсор то тут нафига? чтобы дольше работало? Всё двумя запросами решается (т.к. 2 таблицы апдейтить). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 08:17 |
|
||
|
Transact-SQL @CURSOR
|
|||
|---|---|---|---|
|
#18+
iii2, Будьте добры, подсказать, как это сделать правильно !? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 12:18 |
|
||
|
Transact-SQL @CURSOR
|
|||
|---|---|---|---|
|
#18+
Какая версия сервера? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 14:54 |
|
||
|
Transact-SQL @CURSOR
|
|||
|---|---|---|---|
|
#18+
peskauskas, погуглите => задача поиска островов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 15:47 |
|
||
|
Transact-SQL @CURSOR
|
|||
|---|---|---|---|
|
#18+
Просьба убрать от экранов детей, беременных и кормящих женщин, а также психически нестабильных личностей Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 18:43 |
|
||
|
Transact-SQL @CURSOR
|
|||
|---|---|---|---|
|
#18+
Руслан Дамирович, ОГОНЬ! а теперь как это сделать с курсором ибо юнитов порядка 10к+ и временных точек тоже некислое количество, причем у каждого юнита... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 19:21 |
|
||
|
Transact-SQL @CURSOR
|
|||
|---|---|---|---|
|
#18+
iii2, 14,0 нужно сделать салюшн именно в трансакте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 19:22 |
|
||
|
Transact-SQL @CURSOR
|
|||
|---|---|---|---|
|
#18+
peskauskas, если 14й, то можете еще прикрутить Lead/Lag, а вот зачем Вам курсор до меня не доходит, чтобы дольше обрабатывалось или начальник сказал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 20:12 |
|
||
|
Transact-SQL @CURSOR
|
|||
|---|---|---|---|
|
#18+
peskauskas, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. Примерный набросок.... Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 21:19 |
|
||
|
Transact-SQL @CURSOR
|
|||
|---|---|---|---|
|
#18+
Какой прекрасный говнокод! Давайте еще! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 21:24 |
|
||
|
Transact-SQL @CURSOR
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевич, Если не можете помочь, зачем показывать всем, что вы этого не можете ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 22:18 |
|
||
|
Transact-SQL @CURSOR
|
|||
|---|---|---|---|
|
#18+
peskauskas, Помогите это правильно записать пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 23:38 |
|
||
|
Transact-SQL @CURSOR
|
|||
|---|---|---|---|
|
#18+
iiyama, Готов выслушать ваше решение, начальник упомянул про курсор причем 2-го уровня... у меня в пятницу тестирование и скажем так, мне дали время и пример для того что бы подготовиться. Я могу все это написать в Экселе, в котором я разбираюсь куда лучше, но задача сделать решение в трансакте и не факт что курсором. В целом, от меня будут ждать результат, а как я его достигну это мое дело... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 23:42 |
|
||
|
Transact-SQL @CURSOR
|
|||
|---|---|---|---|
|
#18+
peskauskasГавриленко Сергей Алексеевич, Если не можете помочь, зачем показывать всем, что вы этого не можете ?На "слабо" своих корешей в подъезде будете разводить. Прощайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 00:46 |
|
||
|
Transact-SQL @CURSOR
|
|||
|---|---|---|---|
|
#18+
peskauskasРуслан Дамирович, ОГОНЬ! а теперь как это сделать с курсором ибо юнитов порядка 10к+ и временных точек тоже некислое количество, причем у каждого юнита... Так оно и для 10к юнитов будет работать, не снижая производительности. Курсор будет работать примерно в 1000 раз медленнее (это не фигура речи). "Если ты знаешь синтаксис курсора - это уже повод относиться к тебе с подозрением" (С) Олонский, если мне память не изменяет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 09:29 |
|
||
|
Transact-SQL @CURSOR
|
|||
|---|---|---|---|
|
#18+
peskauskas, Ну если начальник сказал, делайте как он сказал, на то он и началнеГ. Но его хотелка делается запросом без всяких курсоров. См. пример Руслан Дамирович пример Б. Вложенный курсор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 11:05 |
|
||
|
Transact-SQL @CURSOR
|
|||
|---|---|---|---|
|
#18+
uaggster, Я его и не знаю, точнее понять не могу до конца. он мне не впился никуда, но такая задача тестирования. =( у кого можно проконсультироваться в месенджере по синтаксису ? 89250437967 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 11:10 |
|
||
|
Transact-SQL @CURSOR
|
|||
|---|---|---|---|
|
#18+
peskauskas, считает, но не правильно... =( сократил количество данных и подписал для наглядности INSERT INTO @data VALUES ( 2224, '2017-05-01T12:10:03', 0 ), -- время 1 ( 2224, '2017-05-01T12:10:19', 0 ), -- время 2 отличается на 16 секунд ( 2224, '2017-05-01T12:10:32', 1 ), -- онлайн, отличается от пред идущего на 23 секунды ( 2224, '2017-05-01T12:10:36', 1 ) -- итого должно показать итоговое время оффлай 16+23 = 39 секунд ; /*Острова. Детская задачка по определению границы изменения значений*/ WITH считает ID IPO DURATION 2224 0 43832 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 12:04 |
|
||
|
Transact-SQL @CURSOR
|
|||
|---|---|---|---|
|
#18+
peskauskaspeskauskas, считает, но не правильно... =( сократил количество данных и подписал для наглядности Дружище, научись читать комментарии; осознай, что именно делает код; модифицируй под свои нужды. Подсказка: оно считает, что если 0 был первым, то он был на начало дня, он считает, что если последней была 1, то 1 была до конца дня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 12:09 |
|
||
|
Transact-SQL @CURSOR
|
|||
|---|---|---|---|
|
#18+
Руслан Дамирович, Пардон !!! слеп =( бьюсб несколько дней, мозги в кашу =( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 12:48 |
|
||
|
Transact-SQL @CURSOR
|
|||
|---|---|---|---|
|
#18+
peskauskas, Кто может мне расжевать курсор ?! плз. =( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 13:51 |
|
||
|
Transact-SQL @CURSOR
|
|||
|---|---|---|---|
|
#18+
peskauskaspeskauskas, Кто может мне расжевать курсор ?! плз. =(Так какие вопросы, конкретно? Вы же показали тут код с курсором, там всё нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 13:55 |
|
||
|
Transact-SQL @CURSOR
|
|||
|---|---|---|---|
|
#18+
alexeyvg, Да, но! в центре есть камент -------ВОТ ТУТ ДОЛЖЕН БЫТЬ ЕЩЕ ОДИН КУРСОР, КОТОРЫЕ ПЕРЕБИРАЕТ КРИТЕРИИ---- в место которого теоретически должен быть ----ЕСЛИ ПЕРЕМЕННАЯ UID ЕСТЬ В СПИСКЕ) , И ((есть разница между реальным и прошлым времинем более 15 секунд ) И ( IPO = 1)) ИЛИ (ipo = 0) IF (( @UID = (SELECT id FROM Unit WHERE u.id = @UID ) AND ( @TR - @TP >= '00:00:15' ) AND ( p.IPO = 1 )) OR ( @UID = u.id ) AND ( p.IPO = 0 ) BEGIN ---- то! прибавить @TS разницу @TR - @TP) SET @TS = @TS + (p.TimeStamp - @TP) END ELSE ---- ЕСЛИ УСЛОВИЯ НЕ ВЫПОЛНЯЮТСЯ, ТО = @UID + 1 (соотв, сл ряд) SET @UID = @UID + 1 но как правильно его записать я пока не понял =( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 15:28 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39580809&tid=1690517]: |
0ms |
get settings: |
7ms |
get forum list: |
22ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 379ms |

| 0 / 0 |
