|
|
|
Сравнение строк
|
|||
|---|---|---|---|
|
#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. 38. 39. При этом, хотелось бы увидеть следующий результат: Код изделия Какая-то информация по изделию Номер версии Результат1 aa 1 01 aa 2 11 ab 3 12 bb 1 12 bс 2 1 Объясняю, почему такой результат. Есть изделие, имеет разные версии. Последняя версия считается по умолчанию 1. Здесь всё понятно. Если информация в рамках одного и того же изделия, но с разной версий совпадает, то нам такое изделие не интересно и это 0. Если же чем-то отличается, в данном случае aa и ab, то нам такие и нужно, это 1. Понимаю, что туплю в любом случае... Но, например, функция LAG здесь не подойдёт (кроме конкретного примера), т.к. она сравнивает, насколько я помню, лишь смежные строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 14:21 |
|
||
|
Сравнение строк
|
|||
|---|---|---|---|
|
#18+
Извиняюсь за опечатки, сплю. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 14:22 |
|
||
|
Сравнение строк
|
|||
|---|---|---|---|
|
#18+
Ryuu, Код: plaintext 1. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 14:32 |
|
||
|
Сравнение строк
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 14:35 |
|
||
|
Сравнение строк
|
|||
|---|---|---|---|
|
#18+
Прежде всего, я хотел бы извиниться, т.к. поставил некорректное условие, а именно в таблице у меня стоит 0, вместо 1. В пятницу, к сожалению, не было времени отписаться вовремя. Пример: Код: 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. 47. 48. 49. 50. 51. Результат: Код изделия Какая-то информация по изделию Номер версии Результат1 aa 1 01 aa 2 11 ab 3 01 ab 4 12 bb 1 12 bс 2 1 Требуемый результат: Код изделия Какая-то информация по изделию Номер версии Результат1 aa 1 11 aa 2 11 ab 3 01 ab 4 12 bb 1 12 bс 2 1 Другими словами, как я и говорил: последняя версия всегда 1, а если версия отличается от последней (по полю b), тогда тоже 1. Мне очень понравился вариант с greatest и в частности DECODE(COUNT(*) over (partition BY a, b), 1, 1, 0), но к сожалению я не могу подобрать метод для "исключений", в примере, на основании DECODE(b, lag(b) over (partition BY a order by b), 1, 0). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2017, 08:34 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=180&tid=1886610]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 317ms |

| 0 / 0 |
