Переупорядочить значения столбцов на основе значений в таблице - PullRequest
0 голосов
/ 05 марта 2019

Я хотел бы знать, как мы можем переупорядочить столбцы в порядке убывания при получении данных.

Пожалуйста, попробуйте предоставить решение, которое может быть общим для любого количества столбцов.

Каждая строка должна быть перестроена в порядке убывания, пока мы получаем данные.Я пытаюсь сделать что-то вроде порядка, но не на основе столбца, а строки.Это достижимо.

Ответы [ 3 ]

0 голосов
/ 06 марта 2019

Ну, зависит от того, какой результат вы хотите.Если вы хотите, чтобы данные сортировались по первому заполненному столбцу, это следует сделать.

select nvl(col1,nvl(col2,nvl(col3,col4))), 'rest of data'
from testing
order by nvl(col1,nvl(col2,nvl(col3,col4))) desc nulls last;
0 голосов
/ 13 марта 2019

упорядочение выполняется с использованием w в порядке убывания.если это нуль, тогда используйте x.если его значение равно нулю, используйте y, если оно равно нулю, тогда используйте z

Это будет COALESCE:

order by coalesce(w,x,y,z) desc

Это даст вам результат, подобный следующему.Сначала все строки, которые начинаются с наибольшего значения (8 в моем примере), затем все строки, которые начинаются со следующего значения (7 в моем примере).

+ --+---+---+---+
| w | x | y | z |
+ --+---+---+---+
| 8 | 7 | 6 | 5 |
|   |   | 8 | 0 |
|   | 8 | 6 | 8 |
| 8 | 8 | 8 | 8 |
|   |   | 7 | 0 |
|   | 7 | 8 | 9 |
+ --+---+---+---+

Если вы хотите выполнить дальнейший порядок в этихстрок, затем расширяйте предложение ORDER BY, например:

order by coalesce(w,x,y,z) desc, coalesce(x,y,z) desc, coalesce(y,z) desc, z desc
0 голосов
/ 05 марта 2019

При оформлении заказа попробуйте использовать опцию «NULLS LAST», например:

select * from your_table 
  order by col1 desc nulls last,
           col2 desc nulls last,
           col3 desc nulls last,
           col4 desc nulls last;

Если это не поможет, предоставьте образцы данных и результаты, которые вы хотите получить.

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