|
Как написать запрос, чтобы удалить повторы?
|
|||
---|---|---|---|
#18+
Допустим есть таблица с данными, ID N_POS VALUE_1 VALUE_211 1 112 1 113 1 221 1 122 1 223 1 224 2 225 1 326 1 427 1 428 1 429 1 4210 1 4211 1 5212 1 5213 1 4 хочу выбрать данные у которых ID=2. Но не просто выбрать, а чтобы сохранился порядок по N_POS и удалить повторы в колонках VALUE_1, VALUE_2, заменить повторяющиеся на NULL, т.е. хочу получить таблицу вида ID N_POS VALUE_1 VALUE_221 1 122 1 223 24 2 225 1 326 1 427 28 29 210 211 1 5212 213 1 4 здесь удаляются значения при N_POS in (3, 7, 8, 9, 10, 12), потому что это повтор предыдущих (в исходной таблице они выделены красным). при N_POS=13 значения остаются, потому что хотя в 6-й строке эти значения уже были, но в предыдущей строке, при N_POS=12, значения другие, другая пара значений в исходной таблице, пара (1, 4)в 13-й строке не равна паре (1, 5) в 12-й строке как написать запрос? может эти строки как-то отметить сперва, потом почистить? голова уже сломалась ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 18:53 |
|
Как написать запрос, чтобы удалить повторы?
|
|||
---|---|---|---|
#18+
Обычно это делается не в запросе, а одним флажком генератора отчётов. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 18:59 |
|
Как написать запрос, чтобы удалить повторы?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:02 |
|
Как написать запрос, чтобы удалить повторы?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, генератор отчетов мне не доступен, что я ему подсуну, то он и отображает я могу вложенные запросы нагородить, аналитические функции всякие, но слишком сложно получается, полей много ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:03 |
|
Как написать запрос, чтобы удалить повторы?
|
|||
---|---|---|---|
#18+
Anton_1234 как написать запрос? может эти строки как-то отметить сперва, потом почистить? голова уже сломалась Ты просто сравнивай значения полей value1 и value2 с предыдущими значениями для выбранного id. И если пары равные, ставь в запросе ещё пару полей с наллом. Тебе должна помочь оконная функция lag(). Типа Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:15 |
|
Как написать запрос, чтобы удалить повторы?
|
|||
---|---|---|---|
#18+
я могу вложенный запрос какой-то сделать, сгородить, что-то типа ID N_POS VALUE_1 VALUE_2 LAG(VALUE_1) LAG(VALUE_2)21 1 1 NULL NULL22 1 21123 1 21224 2 21225 1 32226 1 41327 1 41428 1 41429 1 414210 1 414211 1 514212 1 515213 1 415 а из него уже вытаскивать, сравнивать значения но что-то как-то коряво получается ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:17 |
|
Как написать запрос, чтобы удалить повторы?
|
|||
---|---|---|---|
#18+
mnbvcx Anton_1234 как написать запрос? может эти строки как-то отметить сперва, потом почистить? голова уже сломалась Ты просто сравнивай значения полей value1 и value2 с предыдущими значениями для выбранного id. И если пары равные, ставь в запросе ещё пару полей с наллом. Тебе должна помочь оконная функция lag(). Типа Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:18 |
|
Как написать запрос, чтобы удалить повторы?
|
|||
---|---|---|---|
#18+
Anton_1234генератор отчетов мне не доступен Это как? Тогда просто напиши докладную с формулировкой "проблема на вашей стороне" тому, кому он доступен. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:51 |
|
Как написать запрос, чтобы удалить повторы?
|
|||
---|---|---|---|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2020, 08:31 |
|
Как написать запрос, чтобы удалить повторы?
|
|||
---|---|---|---|
#18+
Anton_1234 примерно что-такое я и хотел Код: plsql 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.
..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2020, 08:43 |
|
Как написать запрос, чтобы удалить повторы?
|
|||
---|---|---|---|
#18+
Stax, ой 24 then value_2 end v2 .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2020, 09:05 |
|
Как написать запрос, чтобы удалить повторы?
|
|||
---|---|---|---|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2020, 10:25 |
|
Как написать запрос, чтобы удалить повторы?
|
|||
---|---|---|---|
#18+
watson, красиво, но не совсем точно, в последнем ряду значение потеряно, паре (1,4) присваивается номер row_number=6, теряется значение ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2020, 12:42 |
|
Как написать запрос, чтобы удалить повторы?
|
|||
---|---|---|---|
#18+
Спасибо всем, я знал, что я на форуме друзей. Прочитал все сообщения какие-то мысли возникли, и даже чего-то наваял, но красиво у меня не выходит. (модельный пример более-менее смотрится, а рабочий пример с кучей таблиц... не очень. Придется еще подумать) Код: plsql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2020, 12:53 |
|
|
start [/forum/topic.php?fid=52&fpage=45&tid=1881213]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 153ms |
0 / 0 |