银行储蓄存款数据,查询排序的实现??100分请教,在线等.
您好,请教您问题:
(sql2000数据库)
现有视图: v_储蓄
查询数据(select * from v_储蓄 ):
视图数据显示为:
帐号 一本通号 卡号 ...(其他字段)
17010111123 23434432 354235235 // (帐号, 一本通号不为空, 卡号不为空 )
17010100012 null 353202123 //( 帐号, 一本通号为空, 卡号不为空 )
17021312313 null 354425352
17010000003 21897987 null //(帐号, 一本通号不为空, 卡号为空)
17012313121 null null //( 帐号, 一本通号为空, 卡号为空 )
17012876876 22431242 null //(帐号, 一本通号为空, 卡号不为空 )
......... .......... ........
视图定义规则:
帐号为主键,具有唯一性,不为空
帐号对应其他字段,存在以下数据关系:
帐号, 一本通号不为空, 卡号不为空
帐号, 一本通号不为空, 卡号为空
帐号, 一本通号为空, 卡号不为空
帐号, 一本通号为空, 卡号为空
现在想对 视图做查询并排序,用一个T_sql语句,要求排序能实现以下效果:
帐号 一本通号 卡号
首先显示, 一本通号为空,卡号为空的帐号数据.(按帐号升序) 即:17012313121 null null
其次显示,一本通号和卡号都不为空的帐号数据,以及,一本通号为空,卡号不为空的帐号数据.(按卡号升序) 即:17010100012 null 353202123
17010111123 23434432 354235235
17021312313 null 354425352
然后显示,一本通号不为空,卡号为空的帐号数据.(按一本通号升序) 即:17010000003 21897987 null
17012876876 22431242 null
我实现的T_sql语句为:
select * from v_储蓄 order by 一本通号,卡号,帐号 asc ;
这样没办法实现 : 一本通号和卡号都不为空的帐号数据,以及,一本通号为空,卡号不为空的帐号数据.(按卡号升序)
求助,在线等:
[解决办法]
同情你,帮顶.
[解决办法]
格式好乱啊。
整理下再看。
[解决办法]
看的出来楼主很急。不过太乱了。贴再多遍,效果也是一样。。
最好整理下后再发吧```
[解决办法]
建议把需求整理下,说清楚
[解决办法]
Haiwer
海阔天空
的这个不对吗???
select * from v_储蓄order by case when 一本通号 is null and 卡号 is null then 1 --首先显示, 一本通号为空,卡号为空的帐号数据 when 卡号 is not null then 2 --其次显示,一本通号和卡号都不为空的帐号数据,以及,一本通号为空,卡号不为空的帐号数据. when 一本通号 is not null then 3 --其次显示,一本通号和卡号都不为空的帐号数据,以及,一本通号为空,卡号不为空的帐号数据. else 4 end,case when 一本通号 is null and 卡号 is null then 帐号 when 卡号 is not null then 卡号 when 一本通号 is not null then 一本通号 else 一本通号 end
[解决办法]
[解决办法]