Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting T-SQL:按列排序,并非每一行都包含数据_Sorting_Tsql - Fatal编程技术网

Sorting T-SQL:按列排序,并非每一行都包含数据

Sorting T-SQL:按列排序,并非每一行都包含数据,sorting,tsql,Sorting,Tsql,我的样本数据如下: taskname |skillname |user |Partition -------------------------------------- taskAAAA |skill1111 |user3 |1 |skill2222 | |1 taskBBBB |skill1111 |user2 |2 taskCCCC |skill3333 |user1 |3 ta

我的样本数据如下:

    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和user不会在taskname列和user列中重复

我设法将分区设置为相同的任务名。但我需要按用户按升序排序,记录将跟随其分区。这种情况下的结果如下:

    taskname  |skillname |user  |Partition
    --------------------------------------
    taskCCCC  |skill3333 |user1 |3
    taskBBBB  |skill1111 |user2 |2 
    taskAAAA  |skill1111 |user3 |1   
              |skill2222 |      |1
    taskDDDD  |skill1111 |user4 |4   
              |skill2222 |      |4   
有人能帮我吗?

第一个选项是使用关键字,最后一个选项为空

select * from table order by user NULLS LAST
如果SQL不支持
NULLS
,则可以使用值表达式

select * from table order by user IS NULL, user
如果用户字段为null,则表达式
为null
返回1,否则返回0。因此,升序排序时,具有非空值(0)的行将位于第一位,而具有空值(1)的行将位于最后一位

接下来的行将按用户字段的值排序。

ANSI SQL支持
null LAST

order by user nulls last
并非所有数据库都支持这种结构。它很容易被双键搜索取代:

order by (case when user is not null then 1 else 2 end),  -- "NULLS LAST"
         user

按“用户”排序最后为空
?用您正在使用的数据库标记您的问题。@a\u horse\u和\u no\u name:对不起,它不应该仅按用户ID排序,而是按照自己的分区排序。让我修改一下我的问题。您好,按照上面修改过的问题,用户按照自己的分区进行排序怎么样?