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

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

У меня есть исходная таблица (TestTable) с данными ниже

groupId,Name,subjectCode,PA
1,LEADER,T,67
1,Prem,P,67
1,Prem,T,89
1,Anjali,T,124
1,LEADER,P,234
1,Anjali,P,234
1,Anjali,NP,45
1,Prem,NP,23
1,LEADER,NP,123

и мои ожидаемые результаты для новой таблицыTestSort - это

1,LEADER,NP,123
1,LEADER,P,234
1,LEADER,T,67
1,Anjali,NP,45
1,Anjali,P,234
1,Anjali,T,124
1,Prem,NP,23
1,Prem,P,67
1,Prem,T,89

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

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

вставить таблицу перезаписи TestSort select * из последовательности TestTable по groupId asc, Name asc, subjectCode asc;

Результат, который я получаю,

groupId,Name,subjectCode,PA
1,LEADER,T,67
1,LEADER,NP,123
1,Anjali,NP,45
1,Anjali,P,234
1,LEADER,P,234
1,Anjali,T,124
1,Prem,T,89
1,Prem,NP,23
1,Prem,P,67

Я где-то что-то не так делаю.

TRAIL 1

  insert overwrite table TestSort select * from TestTable 
order by 
  case when name = 'LEADER' then '0' else '1' end, 
  groupid, 
  name,
  subjectcode;;
    select * from TestSort;

Результат запроса выше

    groupId,Name,subjectCode,PA
1,Anjali,NP,45
1,LEADER,T,67
1,Prem,T,89
1,Prem,P,67
1,LEADER,NP,123
1,Prem,NP,23
1,Anjali,T,124
1,Anjali,P,234
1,LEADER,P,234

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

Ответы [ 2 ]

0 голосов
/ 27 апреля 2019

Вы можете поместить условие непосредственно в предложение ORDER BY:

select * from test 
order by 
  case when name = 'LEADER' then '0' else '1' end, 
  groupid, 
  name,
  subjectcode;
0 голосов
/ 27 апреля 2019

Я думаю, что этот запрос будет работать

select *, case when Name = 'LEADER' then '1' else '0' end as rank from Test order by rank desc, groupId, Name ,subjectCode asc;
...