Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Update таблицы с транспонированием без PIVOT
|
|||
|---|---|---|---|
|
#18+
Добрый день. Возникла необходимость проапдейтить таблицу, по правилам, понятным из кода ниже. Никак не могу понять, почему не работает код, который у меня в голове работает великолепно :) Где-то явно у меня не хватает знаний, но не пойму где. Конкретно в моем случае, можно, наверно, перевернуть таблицу PIVOT-ом или сделать просто несколько последовательных update, но я хочу понять в чем моя ошибка на будущее. Подскажите, что же не так... Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2019, 09:07 |
|
||
|
Update таблицы с транспонированием без PIVOT
|
|||
|---|---|---|---|
|
#18+
RuCosinus, Потому что update работает не последовательно. Каждый кейс вычисляется для исходной строки, а не а вовсе не для "предыдущей". Начинать писать updete лучше с select Код: sql 1. 2. 3. 4. 5. 6. 7. из трех строк для каждого pid.ID в итоге останется одна, для простоты можно считать, случайная И только тогда, когда результат селекта устраивает можно раскомментировать первую строку и закомментировать вторую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2019, 09:25 |
|
||
|
Update таблицы с транспонированием без PIVOT
|
|||
|---|---|---|---|
|
#18+
Guf, Ага, я понял вроде. Предполагаю также, что insert, в отличии от update, работает последовательно. Таблица #pID у меня заполняется первоначальными данными посредством insert по такому же принципу, как я планировал использовать update. Подскажите, как лучше (правильнее, быстрее, логичнее и т.д.) решить мою задачу. Вариант 1 Использовать промежуточную таблицу, в которую я занесу данные insert-ом, а потом уже перенести update-ом в таблицу #pTemp Вариант 2 Использовать подзапрос в котором попробовать развернуть эту таблицу через PIVOT Вариант 3 Последовательно написать 3 update Примечание: на самом деле у меня таких полей не 3, как в упрощенном примере (year,month,day), а в разы больше. В конкретном случае (сейчас) их порядка 30. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2019, 10:15 |
|
||
|
Update таблицы с транспонированием без PIVOT
|
|||
|---|---|---|---|
|
#18+
RuCosinusПредполагаю также, что insert, в отличии от update, работает последовательно. Таблица #pID у меня заполняется первоначальными данными посредством insert по такому же принципу, как я планировал использовать update. Ась?! Как это? Не понял, покажи кусок кода. RuCosinusПодскажите, как лучше (правильнее, быстрее, логичнее и т.д.) решить мою задачу. Любым который устроит лично тебя по скорости работы и удобству поддержки. Представь, что у тебя добавится/уберется один столбик в таблице и прикинь, сколько времени тебе потребуется для внесения изменений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2019, 10:23 |
|
||
|
Update таблицы с транспонированием без PIVOT
|
|||
|---|---|---|---|
|
#18+
GufАсь?! Как это? Не понял, покажи кусок кода. Транспонированные данные, которые мне нужно свести в одну таблицу лежат в двух. Сначала я вставляю кусок данных из первой таблицы, а потом пытвлся проапдейтить по тому же принципу из второй. Пример ниже Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2019, 10:56 |
|
||
|
Update таблицы с транспонированием без PIVOT
|
|||
|---|---|---|---|
|
#18+
RuCosinusДобрый день. Возникла необходимость проапдейтить таблицу, по правилам, понятным из кода ниже. Никак не могу понять, почему не работает код, который у меня в голове работает великолепно :) Где-то явно у меня не хватает знаний, но не пойму где. Конкретно в моем случае, можно, наверно, перевернуть таблицу PIVOT-ом или сделать просто несколько последовательных update, но я хочу понять в чем моя ошибка на будущее. Подскажите, что же не так... Код: 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. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. IDpYearpMonthpDay119971102220190321 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2019, 11:15 |
|
||
|
Update таблицы с транспонированием без PIVOT
|
|||
|---|---|---|---|
|
#18+
RuCosinus, Ну так! Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Видишь разницу? Если ты напишешь: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. тоже отработает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2019, 11:19 |
|
||
|
Update таблицы с транспонированием без PIVOT
|
|||
|---|---|---|---|
|
#18+
court, Это мой вариант 1 - "Использовать промежуточную таблицу, в которую я занесу данные insert-ом, а потом уже перенести update-ом в таблицу #pTemp", но все равно спасибо :) Guf, так понятно, что агрегатные не применимы в update, поэтому и пытался обойтись без них. Видимо у меня в голове не сложилось почему-то применение агрегатных и невозможность update. С задачей все ясно, спасибо за разъяснения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2019, 11:30 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=109&tid=1688088]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 341ms |

| 0 / 0 |
