Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Предыдущее значение вычисляемого поля
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Есть SQL-запрос. SQL-запрос Код: 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. Клиент Код юр лица Код ТТ Код продукции Дата Цена Цена пред Маркировка скидкиКлиент Код юр лица1 Код ТТ1 SKU1 2014-01-01 100 NULL 0Клиент Код юр лица1 Код ТТ1 SKU1 2014-01-02 100 100 0Клиент Код юр лица1 Код ТТ1 SKU1 2014-01-03 80 100 1 Клиент Код юр лица1 Код ТТ1 SKU1 2014-01-04 80 80 0 Клиент Код юр лица1 Код ТТ1 SKU1 2014-01-05 100 80 0 Не обращайте внимание что название полей на русском языке, это для примера и для понятности. А также не придаем значение базовой цены. Просто сравниваем с предыдущей строкой. На четвертой строке вместо 0 должен быть 1. А для этого нужно вытащить предыдущее значение вычисляемого поля Маркировка . То есть написать типа так SQL-Запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 1. Как вытягивать предыдущее значение вычисляемого поля? 2. Order By не работает во вложенном запросе. В рабочем коде используются табличные выражения и вложенные запросы. Как можно обойти эту проблему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 15:47 |
|
||
|
Предыдущее значение вычисляемого поля
|
|||
|---|---|---|---|
|
#18+
ferzmikkКак вытягивать предыдущее значение вычисляемого поля?LEAD() ferzmikkOrder By не работает во вложенном запросе.ORDER BY в промежуточных итогах используется только в том случае, когда влияет на список записей выходного набора. Без ограничения количества возвращаемых записей простая сортировка на набор не влияет - а потому игнорируется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 16:12 |
|
||
|
Предыдущее значение вычисляемого поля
|
|||
|---|---|---|---|
|
#18+
AkinaferzmikkКак вытягивать предыдущее значение вычисляемого поля?LEAD() LEAD вытягивает из последующей строки, а надо из предыдущей. А также по текущей строке при расчете вычисляемого поля [Маркировка скидки] нужно вытянуть рассчитанное значение этого же поля предыдущей строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 16:48 |
|
||
|
Предыдущее значение вычисляемого поля
|
|||
|---|---|---|---|
|
#18+
AkinaferzmikkOrder By не работает во вложенном запросе.ORDER BY в промежуточных итогах используется только в том случае, когда влияет на список записей выходного набора. Без ограничения количества возвращаемых записей простая сортировка на набор не влияет - а потому игнорируется. Поскольку во вложенном запросе я использую оконную функция Lag, то актуально делать сортировку, если я не ошибаюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 16:52 |
|
||
|
Предыдущее значение вычисляемого поля
|
|||
|---|---|---|---|
|
#18+
ferzmikkПоскольку во вложенном запросе я использую оконную функция Lag, то актуально делать сортировку, если я не ошибаюсь.LAG() имеет свой собственный класс ORDER BY и не зависит от внешнего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 16:57 |
|
||
|
Предыдущее значение вычисляемого поля
|
|||
|---|---|---|---|
|
#18+
ferzmikkAkinaпропущено... LEAD() LEAD вытягивает из последующей строки, а надо из предыдущей. А также по текущей строке при расчете вычисляемого поля [Маркировка скидки] нужно вытянуть рассчитанное значение этого же поля предыдущей строки. А тут как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 17:24 |
|
||
|
Предыдущее значение вычисляемого поля
|
|||
|---|---|---|---|
|
#18+
ferzmikkА тут как?делать в два прохода ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 17:53 |
|
||
|
Предыдущее значение вычисляемого поля
|
|||
|---|---|---|---|
|
#18+
Тут расчет получается последовательным как в excel. На скриншоте для ячейки P14 нужно выйти на P13, для P15 нужно выйти на P14. Никак получается. Как написать запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 19:50 |
|
||
|
Предыдущее значение вычисляемого поля
|
|||
|---|---|---|---|
|
#18+
ferzmikkКак написать запрос?"рекурсивно", в смысле рекурсивный запрос :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 20:11 |
|
||
|
Предыдущее значение вычисляемого поля
|
|||
|---|---|---|---|
|
#18+
courtferzmikkКак написать запрос?"рекурсивно", в смысле рекурсивный запрос :) Код: 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. КлиентКод юр лицаКод ТТКод продукцииДатаЦенаidЦена предМаркировка скидкиКлиентКод юр лица1Код ТТ1SKU12014-01-011001NULL0КлиентКод юр лица1Код ТТ1SKU12014-01-0210021000КлиентКод юр лица1Код ТТ1SKU12014-01-038031001КлиентКод юр лица1Код ТТ1SKU12014-01-04804801КлиентКод юр лица1Код ТТ1SKU12014-01-051005800 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 20:30 |
|
||
|
Предыдущее значение вычисляемого поля
|
|||
|---|---|---|---|
|
#18+
court, Спасибо, буду разбирать! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 20:37 |
|
||
|
Предыдущее значение вычисляемого поля
|
|||
|---|---|---|---|
|
#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. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 22:08 |
|
||
|
Предыдущее значение вычисляемого поля
|
|||
|---|---|---|---|
|
#18+
invm, Если добавить еще строки в исходных данных Код: 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. Клиент Код юр лица Код ТТ Код продукции Дата Цена Цена пред (Отсутствует имя столбца)Клиент Код юр лица1 Код ТТ1 SKU1 2014-01-01 100 NULL 0Клиент Код юр лица1 Код ТТ1 SKU1 2014-01-02 100 100 0Клиент Код юр лица1 Код ТТ1 SKU1 2014-01-03 80 100 1Клиент Код юр лица1 Код ТТ1 SKU1 2014-01-04 80 80 1Клиент Код юр лица1 Код ТТ1 SKU1 2014-01-05 80 80 0 Клиент Код юр лица1 Код ТТ1 SKU1 2014-01-06 80 80 0 Клиент Код юр лица1 Код ТТ1 SKU1 2014-01-07 100 80 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2018, 07:50 |
|
||
|
Предыдущее значение вычисляемого поля
|
|||
|---|---|---|---|
|
#18+
court, При таком запросе Код: 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. Клиент Код юр лица Код ТТ Код продукции Дата Цена id Цена пред Маркировка скидкиКлиент Код юр лица1 Код ТТ1 SKU1 2014-01-01 100 1 NULL 0Клиент Код юр лица1 Код ТТ1 SKU1 2014-01-02 100 2 100 0Клиент Код юр лица1 Код ТТ1 SKU1 2014-01-03 80 3 100 1 Клиент Код юр лица1 Код ТТ1 SKU1 2014-01-06 100 4 80 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2018, 08:09 |
|
||
|
Предыдущее значение вычисляемого поля
|
|||
|---|---|---|---|
|
#18+
court, И еще, при использовании рекурсии, когда много строк, то запрос намного дольше выполянется. Возможно ли как то ускорить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2018, 08:11 |
|
||
|
Предыдущее значение вычисляемого поля
|
|||
|---|---|---|---|
|
#18+
ferzmikkcourt, И еще, при использовании рекурсии, когда много строк, то запрос намного дольше выполянется. Возможно ли как то ускорить? 165 строк - 2 мин 36 сек ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2018, 08:44 |
|
||
|
Предыдущее значение вычисляемого поля
|
|||
|---|---|---|---|
|
#18+
ferzmikkcourt, При таком запросе Код: 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. Клиент Код юр лица Код ТТ Код продукции Дата Цена id Цена пред Маркировка скидкиКлиент Код юр лица1 Код ТТ1 SKU1 2014-01-01 100 1 NULL 0Клиент Код юр лица1 Код ТТ1 SKU1 2014-01-02 100 2 100 0Клиент Код юр лица1 Код ТТ1 SKU1 2014-01-03 80 3 100 1 Клиент Код юр лица1 Код ТТ1 SKU1 2014-01-06 100 4 80 1 это исправь (желтым выделено) Код: 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. [Цена пред которая используется в расчете] - это для понимания, что там вообще происходит, если нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2018, 09:57 |
|
||
|
Предыдущее значение вычисляемого поля
|
|||
|---|---|---|---|
|
#18+
court, В условном примере правильно работает, а в рабочем - не правильно. Не могу понять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2018, 12:19 |
|
||
|
Предыдущее значение вычисляемого поля
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2018, 12:30 |
|
||
|
Предыдущее значение вычисляемого поля
|
|||
|---|---|---|---|
|
#18+
ferzmikkcourt, В условном примере правильно работает, а в рабочем - не правильно. Не могу понять. Разобрался. В другой части кода надо было не так писать Код: sql 1. а так Код: sql 1. и из за этого неправильно сортировался, следовательно, неправильно маркировались. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2018, 12:32 |
|
||
|
Предыдущее значение вычисляемого поля
|
|||
|---|---|---|---|
|
#18+
Из за рекурсии подтормаживает сильно. Возможно ли как то ускорить выгрузку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2018, 14:31 |
|
||
|
Предыдущее значение вычисляемого поля
|
|||
|---|---|---|---|
|
#18+
ferzmikkИз за рекурсии подтормаживает сильно. Возможно ли как то ускорить выгрузку? 65000 строк. Обрабатывает более 2 часов. Может быть в ON еще связку указать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2018, 16:24 |
|
||
|
Предыдущее значение вычисляемого поля
|
|||
|---|---|---|---|
|
#18+
Обнаружил не учтенный момент. SQL-запрос Код: 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. Результат запросаКлиент Код юр лица Код ТТ Код продукции Дата Цена id Цена пред Маркировка скидки Цена пред кот исполь в расчКлиент1 Код юр лица1 Код ТТ1 SKU1 2014-01-01 100 1 100 0 NULLКлиент1 Код юр лица1 Код ТТ1 SKU1 2014-01-02 80 2 80 1 100Клиент1 Код юр лица1 Код ТТ1 SKU1 2014-01-03 80 3 80 1 80Клиент1 Код юр лица1 Код ТТ1 SKU1 2014-01-04 80 4 80 1 80Клиент1 Код юр лица1 Код ТТ1 SKU1 2014-01-05 100 5 100 0 80Клиент1 Код юр лица1 Код ТТ1 SKU1 2014-01-06 100 6 100 0 100Клиент1 Код юр лица1 Код ТТ1 SKU2 2014-01-01 50 7 50 1 100Клиент1 Код юр лица1 Код ТТ1 SKU2 2014-01-02 100 8 100 0 50Клиент1 Код юр лица1 Код ТТ1 SKU2 2014-01-03 80 9 80 1 100Клиент1 Код юр лица1 Код ТТ1 SKU2 2014-01-04 80 10 80 1 80Клиент1 Код юр лица1 Код ТТ1 SKU2 2014-01-05 100 11 100 0 80Клиент1 Код юр лица1 Код ТТ1 SKU2 2014-01-06 100 12 100 0 100Клиент1 Код юр лица1 Код ТТ2 SKU1 2014-01-01 60 13 60 1 100Клиент1 Код юр лица1 Код ТТ2 SKU1 2014-01-02 100 14 100 0 60Клиент1 Код юр лица1 Код ТТ2 SKU1 2014-01-03 80 15 80 1 100Клиент1 Код юр лица1 Код ТТ2 SKU1 2014-01-04 80 16 80 1 80Клиент1 Код юр лица1 Код ТТ2 SKU1 2014-01-05 100 17 100 0 80Клиент1 Код юр лица1 Код ТТ2 SKU1 2014-01-06 100 18 100 0 100 Если на следующей строке другая группа, то есть другое SKU, другая ТТ, то предыдущую цену и предыдущую маркировку смотреть не нужно. Для этой же строки в поле Маркировка скидки сразу возвращает ноль. Как правильно дописать запрос? И еще. В поле Цена пред отображается текущая цена, но не предыдущая. Почему так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 11:42 |
|
||
|
Предыдущее значение вычисляемого поля
|
|||
|---|---|---|---|
|
#18+
ferzmikk, Код: sql 1. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 11:58 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=46&tid=1689822]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
124ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 459ms |

| 0 / 0 |
