LPAD столбец с максимальной длиной этого столбца - PullRequest
1 голос
/ 12 января 2012

У меня есть столбец чисел различной длины, и я хочу дополнить их нулями, чтобы они были равны наибольшему числу. Вот так:

SQL> SELECT LPAD(PROD_ID, 5, 0) AS PROD_ID  
  2  FROM PRODUCTS_TBL;  

PROD_  
----- 
11235  
00119  
00013  
00015  
00222  
00301  
00302  
00303  
00006  
00087  
00009  
00090  

Но я не хочу использовать число 5, я хочу использовать функцию для PROD_ID на случай, если она изменится позже. Я пытался

SQL> SELECT LPAD(PROD_ID, MAX(LENGTH(PROD_ID)), 0)
  2  FROM PRODUCTS_TBL;

но

SELECT LPAD(PROD_ID, MAX(LENGTH(PROD_ID)), 0)
        *
ERROR at line 1:
ORA-00937: not a single-group group function

Есть предложения?

Ответы [ 2 ]

5 голосов
/ 12 января 2012

Я не могу проверить это сам, но что если вы попробуете

SELECT LPAD(PROD_ID,
            MAX(LENGTH(PROD_ID)) OVER (),
            0)
FROM   PRODUCTS_TBL;  
0 голосов
/ 12 января 2012

Вероятно, лучше всего сделать это в два этапа.Сначала выберите максимальную длину в одном запросе, затем запустите второй запрос, который выбирает фактические данные.Это можно сделать с помощью объединения, но, вероятно, оно будет работать плохо.

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