Добавить инкрементный индекс в операторе выбора - PullRequest
0 голосов
/ 10 октября 2018

У меня есть простая инструкция SELECT:

SELECT WORKORDERID AS WOID FROM WORKORDER WO

Это вернет список идентификаторов рабочих заказов в моей таблице WO.

   WOID
  |AAB1|
  |AAB2|
  |AAB3|

Но я хотел бы добавить номера индексов длякаждый из идентификаторов рабочих заданий, например, такой:

SELECT WORKORDERID ||'-'||[index] AS WOID FROM WORKORDER WO

Мой желаемый результат:

       WOID
      |AAB1-1|
      |AAB1-2|
      |AAB1-3|
      |AAB1-4|
      |AAB2-1|
      |AAB2-2|
      |AAB2-3|
      |AAB2-4|
      |AAB3-1|
      |AAB3-2|
      |AAB3-3|
      |AAB3-4|

Единственный способ, о котором я могу думать, - это создать еще одну таблицу с индексом 1-4, а затемприсоединиться к этим двум таблицам.Мой вопрос: возможно ли достичь этого результата всего за одну инструкцию SELECT без необходимости создания другой таблицы?

Ответы [ 3 ]

0 голосов
/ 10 октября 2018

Возможно что-то вроде:

with idx (n) as (
  select 1 from dual union all
  select 2 from dual union all
  select 3 from dual union all
  select 4 from dual
)
select
    wo.workorderid || '-' || idx.n
  from workorder wo, idx
0 голосов
/ 10 октября 2018

Вот, пожалуйста:

SQL> with test (workorderid) as
  2    (select 'AAB1' from dual union all
  3     select 'AAB2' from dual union all
  4     select 'AAB3' from dual
  5    )
  6  select workorderid ||'-'|| column_value result
  7  from test,
  8       table(cast(multiset(select level from dual
  9                           connect by level <= 4
 10                          ) as sys.odcinumberlist))
 11  order by 1;

RESULT
-------------------------
AAB1-1
AAB1-2
AAB1-3
AAB1-4
AAB2-1
AAB2-2
AAB2-3
AAB2-4
AAB3-1
AAB3-2
AAB3-3
AAB3-4

12 rows selected.

SQL>
0 голосов
/ 10 октября 2018

Вы можете использовать cross join:

select wo.woid || '-' || n.n as new_woid
from WORKORDER wo cross join
     (select 1 as n from dual union all
      select 2 as n from dual union all
      select 3 as n from dual union all
      select 4 as n from dual
     ) n
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...