繁体   English   中英

SQL在第n行中从Dual选择数据

[英]SQL Select Data From Dual in nth row

我想知道我们是否可以从双重中选择并将结果放在任何结果行? 我想要的结果将是:

 CID        EXT
------    ------
ALL       ALL
--        --
DATAA     DATAA
DATAB     DATAB
DATAC     DATAC

我在做

SELECT 'ALL' AS "CID"
   , 'ALL' AS "EXT"
FROM DUAL
UNION
SELECT *
FROM
(
   SELECT DISTINCT COLUMN AS "CID"
      ,  COLUMN AS "EXT"
   FROM TABLEA
)  

但我的结果是

CID        EXT
------    ------
--        --
ALL       ALL
DATAA     DATAA
DATAB     DATAB
DATAC     DATAC

将一个任意值放在列表顶部是相当容易的。

select 'ALL', 1
from dual
union
select your_column_name, 2
from tablea
order by 2, 1

基本上,您正在提供动态排序。

如果你想要包含“ - ”,这对我来说有点奇怪,请使用第三个选择和另一个联合。

select 'All', 1
from dual
union
select '--', 2
from dual
union
select your_column_name, 3
from tablea
order by 2, 1
SELECT 'ALL' AS "CID"
   , 'ALL' AS "EXT"
FROM DUAL
UNION ALL
SELECT *
FROM
(
   SELECT DISTINCT COLUMN AS "CID"
      ,  COLUMN AS "EXT"
   FROM TABLEA
)
ORDER BY CASE WHEN "CID" = 'ALL' THEN 1 ELSE 2 END
        ,"CID"
        ,"EXT";

好的,我想我找到了答案。 如果我使用杰弗里的回答,我会得到

ERROR: ORA-01785: ORDER BY item must be the number of a SELECT-list expression

所以,我只是改为

SELECT 'ALL' AS "CID" , 'ALL' AS "EXT" FROM DUAL
UNION 
SELECT * FROM
( 
SELECT DISTINCT COLUMN AS "CID",  COLUMN AS "EXT"
 FROM TABLEA ORDER BY "CID", "EXT"
)  

然后我的结果工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM