Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Отбор данных / 10 сообщений из 10, страница 1 из 1
15.02.2019, 16:03
    #39774622
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор данных
Добрый день, подскажите как можно реализовать запрос, нужно отобрать id тех данных где в attrid есть 13000412 а следом за им идет 13000411. По моему примеры это будет id 1,4,5
...
Рейтинг: 0 / 0
15.02.2019, 16:10
    #39774628
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор данных
LAG/LEAD

SY.
...
Рейтинг: 0 / 0
15.02.2019, 16:20
    #39774637
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор данных
elimpionПо моему примеры это будет id 1,4,53
...
Рейтинг: 0 / 0
15.02.2019, 16:55
    #39774672
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор данных
SY,
функцию посмотрел, на как там прописать условия, что первая строка должна быть 13000412 а предыдущая 13000411?
...
Рейтинг: 0 / 0
15.02.2019, 16:56
    #39774674
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор данных
elimpion,

Нужно поле сортировки

....
stax
...
Рейтинг: 0 / 0
15.02.2019, 17:01
    #39774679
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор данных
elimpionкак там прописать условия, что первая строка должна быть 13000412 а предыдущая 13000411?
Для этого следует определить отношение порядка (какая строка какой "первая" и какая - "предыдущая").
В excel Вы используете для этого номер строки, в rdbms такого понятия нет.
...
Рейтинг: 0 / 0
15.02.2019, 17:12
    #39774691
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор данных
andrey_anonymous,
С порядком я определился
...
Рейтинг: 0 / 0
15.02.2019, 19:17
    #39774745
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор данных
Ты неправильно сформулировал задачу. Если порядок определяется attrid, то тебе нужны id где attrid = 13000411,13000412.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
WITH T AS (
           SELECT  C.*,
                   COUNT(DISTINCT ATTRID) OVER() CNT
             FROM  CARDATTRS C
             WHERE OBJECTID = '3092802'
               AND ATTRCODE = 'STATEID'
               AND ATTRID IN (13000411,13000412)
          )
SELECT  *
  FROM  T
  WHERE CNT = 2
/



SY.
...
Рейтинг: 0 / 0
15.02.2019, 19:23
    #39774747
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор данных
А если ты хочешь все записи для таких id:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
WITH T AS (
           SELECT  ID,
                   SUM(
                       DISTINCT CASE ATTRID
                                  WHEN 13000411 THEN 1
                                  WHEN 13000412 THEN 2
                                END
                      ) OVER() FLAG
             FROM  CARDATTRS
             WHERE OBJECTID = '3092802'
               AND ATTRCODE = 'STATEID'
          )
SELECT  ID
  FROM  T
  WHERE FLAG = 3
/



SY.
...
Рейтинг: 0 / 0
15.02.2019, 19:27
    #39774750
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор данных
Ну а если нужны только сами id, то банальный group by:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT  ID
  FROM  CARDATTRS
  WHERE OBJECTID = '3092802'
    AND ATTRCODE = 'STATEID'
    AND ATTRID IN (13000411,13000412)
  GROUP BY ID
  HAVING COUNT(DISTINCT ATTRID) = 2
/



SY.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Отбор данных / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]