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

リストの先頭に任意の値を 1 つ置くのはかなり簡単です。

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

基本的に、その場でソート順を提供しています。

「--」を含めたい場合は、少し奇妙に思えますが、3 番目の select と別の union を使用してください。

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

OK, I think I found out the answer. If I used Jeffrey's answer, I will get

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

So, I just changed to

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

Then my results work.

于 2012-10-19T03:23:40.637 に答える