1

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

 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
4

3 回答 3

2

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

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
于 2012-10-18T04:46:58.423 回答
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";
于 2012-10-18T04:46:43.670 回答
1

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

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"
)  

然后我的结果起作用了。

于 2012-10-19T03:23:40.637 回答