Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用行值追加sql select语句中的行号_Sql_Oracle - Fatal编程技术网

用行值追加sql select语句中的行号

用行值追加sql select语句中的行号,sql,oracle,Sql,Oracle,我正在尝试将select STATTION结果连接到一行。 例如: 对于此select语句输出: Name ABC DEF GHI 我需要以下输出: 名字 (意味着每行的行号应追加在前面) 我正在使用wm_concat()函数,但它给了我以下o/p:ABC、DEF、GHI 有人能帮忙吗?听起来你想要类似的东西。Oracle 11g+中提供了listag()函数: select listagg(cast(rownum as varchar2(20))||' '|| name, ',

我正在尝试将select STATTION结果连接到一行。
例如: 对于此select语句输出:

Name  
ABC  
DEF  
GHI
我需要以下输出:
名字

(意味着每行的行号应追加在前面)
我正在使用wm_concat()函数,但它给了我以下o/p:
ABC、DEF、GHI


有人能帮忙吗?

听起来你想要类似的东西。Oracle 11g+中提供了
listag()
函数:

select listagg(cast(rownum as varchar2(20))||' '|| name, ', ') 
        within group (order by name) name
from yourtable

结果:

|                NAME |
-----------------------
| 1 ABC, 2 DEF, 3 GHI |
如果您没有Oracle 11g,则可以使用
wm_concat()


此外,您还可以使用WITH子句:

WITH tmp AS 
(
   :your_select_statement 
)
SELECT 
  LISTAGG(rownum || ' ' || :your_column, ', ') 
  WITHIN GROUP (ORDER BY :your_column) tmp
FROM tmp;

然后rownum来自tmp临时表,其结果是:您的\u select \u语句不是来自主表。

Listag()仅在Oracle 11r2之后可用。@apc更正他们没有指定版本。如果不是oracle 11g,则可以使用wm_concat()。
select wm_concat(cast(rownum as varchar2(20))||' '|| name) name
from yourtable
WITH tmp AS 
(
   :your_select_statement 
)
SELECT 
  LISTAGG(rownum || ' ' || :your_column, ', ') 
  WITHIN GROUP (ORDER BY :your_column) tmp
FROM tmp;