Oracle SQL - извлечение записи наконец - PullRequest
1 голос
/ 22 мая 2011
SELECT * FROM
(
SELECT city from addr_tab
UNION ALL
SELECT 'zzzz' AS city from dual
)ORDER BY city

Я использую описанный выше подход для извлечения zzzz как последней записи таблицы.Но я не думаю, что это будет работать постоянно, так как теоретически город может быть чем-то большим, чем «zzzz» в алфавитном порядке.Есть ли какой-либо другой надежный подход, чтобы сделать эту зашифрованную запись последней записью?Мне это нужно для отчетов с использованием оракулов.Любая помощь будет приветствоваться.

Ответы [ 3 ]

4 голосов
/ 22 мая 2011

Добавьте еще один виртуальный столбец (order_col) для использования при оформлении заказа.В результате запрос будет выглядеть следующим образом.

SELECT * FROM
(
SELECT city, 1 as order_col from addr_tab
UNION ALL
SELECT 'zzzz', 2 as order_col AS city from dual
)ORDER BY order_col, city

Таким образом, вы можете гарантировать, что zzzz всегда будет последним, поскольку столбец первичного порядка (order_col) гарантированно будет иметь более низкое значение для zzzzчем для всех остальных записей.

1 голос
/ 22 мая 2011

Ну, как уже говорили другие (в комментариях и ответах), вероятно, есть лучший способ подойти к проблеме с самого начала; но если вам нужен временный хак, читайте дальше! ...

Называй последнюю запись как хочешь ...
'zzzz' в порядке ...
а затем использовать пользовательский ORDER BY, например:

SELECT * 
  FROM (
       SELECT city 
         FROM addr_tab
       UNION ALL
       SELECT 'zzzz' AS city 
         FROM dual
       )
ORDER BY 
    CASE WHEN city = 'zzzz' THEN 1 ELSE 0 END,
    city;
0 голосов
/ 22 мая 2011

это может быть решено также следующим запросом

 SELECT * FROM 
 ( SELECT city from addr_tab order by city)
   UNION ALL 
  SELECT 'zzzz' from dual;

теперь есть еще один стиль, чтобы сделать это

with 
b1 as 
(
SELECT city from addr_tab order by city
)
select city from b1
union all 
SELECT 'zzzz' from dual;

так что любой, кого вы можете использовать ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...