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排序,而是按照自己的分区排序。让我修改一下我的问题。您好,按照上面修改过的问题,用户按照自己的分区进行排序怎么样?