首页 > 解决方案 > 在 select 语句中添加增量索引

问题描述

我有一个简单的 SELECT 语句:

SELECT WORKORDERID AS WOID FROM WORKORDER WO

这将返回我的 WO 表中的工单 ID 列表。

   WOID
  |AAB1|
  |AAB2|
  |AAB3|

但我想为每个工单 ID 添加索引号,如下所示:

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 语句中实现此结果而无需创建另一个表?

标签: sqloracle

解决方案


干得好:

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>

推荐阅读