怎么按实际内容排序?

old_gunchinese 2014-07-01 11:22:32
有个表,一个字段是ID。其他字段是附注说明。比如说明1,说明2,说明3
类似如下结果
id,remark1,remrk2,remark3等。

然后里面的数据,比如ID都是001,但是后面的不一样。有的有值,有的没值,有的可能3个都有值。类似如下

id remark1 remrk2 remark3
001 附注红色
001 附注蓝色 附注绿色
001 附注蓝色 附注绿色
001 附注蓝色 附注绿色 附注红色



几个remark的内容是任意的。

我现在想按附注的多少来选择排序。比如第四条,他有3个附注,那么他就排第一,而第一条只有一个附注,就排最后。
同样多附注的,不管附注在那个字段,都只取一条。比如第二条和第三条,就只取一条出来。排在中间。
...全文
106 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
old_gunchinese 2014-07-02
  • 打赏
  • 举报
回复
谢谢版主老大
發糞塗牆 2014-07-01
  • 打赏
  • 举报
回复
----------------------------------------------------------------
-- Author  :DBA_HuangZJ(發糞塗牆)
-- Date    :2014-07-01 11:31:02
-- Version:
--      Microsoft SQL Server 2012 - 11.0.5058.0 (X64) 
--	May 14 2014 18:34:29 
--	Copyright (c) Microsoft Corporation
--	Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)
--
----------------------------------------------------------------
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go 
create table [huang]([id] varchar(3),[remark1] varchar(8),[remrk2] varchar(8),[remark3] varchar(8))
insert [huang]
select '001','附注红色',null,null union all
select '001','附注蓝色','附注绿色',null union all
select '001','附注蓝色','附注绿色',null union all
select '001','附注蓝色','附注绿色','附注红色'
--------------开始查询--------------------------

select * 
from [huang]
ORDER BY DATALENGTH(ISNULL([remark1],'')+ISNULL([remrk2],'')+ISNULL([remark3],'')) DESC 
----------------结果----------------------------
/* 
id   remark1  remrk2   remark3
---- -------- -------- --------
001  附注蓝色     附注绿色     附注红色
001  附注蓝色     附注绿色     NULL
001  附注蓝色     附注绿色     NULL
001  附注红色     NULL     NULL
*/
水族杰纶 2014-07-01
  • 打赏
  • 举报
回复
order by case when then..end

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧