T-SQL: сортировка по столбцам, не каждая строка содержит данные - PullRequest
0 голосов
/ 04 мая 2018

У меня есть пример данных следующим образом:

    taskname  |skillname |user  |Partition
    --------------------------------------
    taskAAAA  |skill1111 |user3 |1   
              |skill2222 |      |1  
    taskBBBB  |skill1111 |user2 |2  
    taskCCCC  |skill3333 |user1 |3 
    taskDDDD  |skill1111 |user4 |4   
              |skill2222 |      |4 

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

Мне удается поставить раздел с тем же именем задачи. Но мне нужно отсортировать по пользователю в порядке возрастания, и записи будут следовать за его разделом. Результат в этом случае будет следующим:

    taskname  |skillname |user  |Partition
    --------------------------------------
    taskCCCC  |skill3333 |user1 |3
    taskBBBB  |skill1111 |user2 |2 
    taskAAAA  |skill1111 |user3 |1   
              |skill2222 |      |1
    taskDDDD  |skill1111 |user4 |4   
              |skill2222 |      |4   

Кто-нибудь может мне помочь?

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

ANSI SQL поддерживает NULLS LAST:

order by user nulls last

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

order by (case when user is not null then 1 else 2 end),  -- "NULLS LAST"
         user
0 голосов
/ 04 мая 2018

В первом варианте используется ключевое слово Order By и NULLS LAST

select * from table order by user NULLS LAST

Если ваш SQL не поддерживает NULLS, вы можете использовать значение IS NULL выражение

select * from table order by user IS NULL, user

Если поле пользователя имеет значение null, то выражение IS NULL возвращает 1, иначе 0. Таким образом, строки с ненулевым значением (0) будут первыми, а строки с нулевым значением (1) будут последними при сортировке по возрастанию ,
Следующие строки будут отсортированы по значению поля пользователя.

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