|
Повторить строку N раз
|
|||
---|---|---|---|
#18+
Нужно повторить строку из таблицы N раз. N хранится в записи таблицы. Как построить запрос без курсора? Код: plaintext 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2005, 11:03 |
|
Повторить строку N раз
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2005, 11:56 |
|
Повторить строку N раз
|
|||
---|---|---|---|
#18+
лихо, респект. но неспортивно. а если больше 255 записей, еще одну системную табличку искать? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2005, 12:55 |
|
Повторить строку N раз
|
|||
---|---|---|---|
#18+
свою сделать. полезная штука ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2005, 13:07 |
|
Повторить строку N раз
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2005, 19:05 |
|
Повторить строку N раз
|
|||
---|---|---|---|
#18+
Тоже искал. Вот (через рекурсию, MSSQL 2005 и последующие выпуски): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
( Взято отсюда ) Исходный набор: NameNumberfoo1bar3baz2 и результат: NameNumberCounterbar31bar32bar33baz21baz22foo11 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2020, 01:41 |
|
Повторить строку N раз
|
|||
---|---|---|---|
#18+
SIMPLicity_ Вот (через рекурсию, MSSQL 2005 и последующие выпуски): Как показывает практика, в реальных ситуациях при большой нагрузке и/или при больших объёмах данных рекурсия вносит существенные издержки в выполнение запроса. Для решения такой задачи обычно действуют наиболее тривиальным способом: заводят таблицу-сиквенс с единственным полем, и с индексом по этому полю. И да, в master..spt_values не 255, а 2048 записей с типом 'P'. Но её не рекомендуется использовать по другим причинам. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2020, 06:06 |
|
Повторить строку N раз
|
|||
---|---|---|---|
#18+
SIMPLicity_ Вот (через рекурсию, MSSQL 2005 и последующие выпуски): ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2020, 08:11 |
|
Повторить строку N раз
|
|||
---|---|---|---|
#18+
SIMPLicity_, Изобретателям велосипедов Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2020, 09:26 |
|
Повторить строку N раз
|
|||
---|---|---|---|
#18+
SIMPLicity_, Как вариант, (если не запрещено) создать SQL CLR функции в отдельной базе, например "Tools", для повседневной жизни. Вот некоторые, например: Код: sql 1. 2. 3. 4. 5. 6. 7.
Код: c# 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. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153.
Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2020, 10:58 |
|
Повторить строку N раз
|
|||
---|---|---|---|
#18+
GetNums by I.Ben-Gan там же и сравнение с рекурсией ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2020, 11:01 |
|
Повторить строку N раз
|
|||
---|---|---|---|
#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.
2019function52727table54523recursion2926188 2008R2table41464function46407recursion1657534 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2020, 11:35 |
|
Повторить строку N раз
|
|||
---|---|---|---|
#18+
invm, а так? Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2020, 12:04 |
|
Повторить строку N раз
|
|||
---|---|---|---|
#18+
Сон Веры Павловны SIMPLicity_ Вот (через рекурсию, MSSQL 2005 и последующие выпуски): Как показывает практика, в реальных ситуациях при большой нагрузке и/или при больших объёмах данных рекурсия вносит существенные издержки в выполнение запроса. Для решения такой задачи обычно действуют наиболее тривиальным способом: заводят таблицу-сиквенс с единственным полем, и с индексом по этому полю. И да, в master..spt_values не 255, а 2048 записей с типом 'P'. Но её не рекомендуется использовать по другим причинам. Там были то ли дыры в нумерации, то ли дубли,- в первой тысячи, кажется,- за давностию, простите , не помню. Писал тут когда-то да лень искать. Мне приведённый вариант понравился - я на его основе курсор сделал. Это служебный сервер для внешних (по отношению к нагруженному серверу) обработок. Соответственно, тут его "тормознутость" даже чуть в плюс. Между итерациями большого курсора всё равно леплю waitfor delay 2-3 секунды,- что бы основные процессы успевали "проср@ться" . Можно, конечно, и без этого, но тут иду чисто по пути наименьшего сопротивления. Да и параллельным обработкам тоже как-то надо жить (почти как CSMA/CD ,- только выражено в товарной форме) .... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2020, 02:25 |
|
Повторить строку N раз
|
|||
---|---|---|---|
#18+
a_voronin SIMPLicity_, Изобретателям велосипедов Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Спасибо! Как лучший вариант, в принципе. Про допустимость SELECT TOP (s.Number) забыл, есличестно ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2020, 02:28 |
|
Повторить строку N раз
|
|||
---|---|---|---|
#18+
Господа!, спасибо за варианты! Просто убийственно! PS У меня нет столько строк, что бы почувствовать существенную разницу во времени генерации. PPS Точнее - не должно быть! Ну..., надеюсь, что не будет. Но теперь появилась мысль проверять сей факт ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2020, 02:35 |
|
Повторить строку N раз
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 17:31 |
|
|
start [/forum/topic.php?fid=46&msg=39932615&tid=1686392]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 339ms |
total: | 469ms |
0 / 0 |