日期:2014-05-18  浏览次数:20389 次

银行储蓄存款数据,查询排序的实现??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 
海阔天空 

的这个不对吗??? 


SQL code
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

------解决方案--------------------
探讨

Haiwer
海阔天空

的这个不对吗???



SQL codeselect * 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 --其次显示,一本通号和卡号都不为空的帐号数据,以…

------解决方案--------------------
帮我把我的帐户余额update成9位数吧,谢谢楼主了...