zoukankan      html  css  js  c++  java
  • sqlserver卡号段分组

    之前给上海一家电子商务公司做一个卖卡系统,遇到了卡号段分组的问题。刚开始没什么好的实现方法,遂在博客园求助但未果,没法自己研究sql,终于搞定。

    问题描述

    有个卡库存表,有个卡号字段,假设数据:16001,16002,16003,16008.16009,16010,16211,16212。注:实际的数据量会很大,卡
    号会很长。 现在要这样用sql统计出来,或者用程序实现,卡段号:16001~16003 数量:3    卡段号:16008~16010 数量:3   
      卡段号:16211~16212 数量:2 

    需求描述:

    表库存表:卡名称、面额、卡号、状态等...

    比如卡名称"上海珠宝卡"面额200的这个卡有很多,每个卡都有一个对应的卡号(比如557105041502662,可能也有字母在卡号的前面),这些卡可能是一批卡,面额都一样的,假设有10000张,在数据库中一个卡号就是一条记录,但是客户不想看到列表中是一张张的卡,而是用卡号段统计出来的,比如557105041502662~557105041502761数量是100张。只要是卡号数字是连续的就组成一条记录显示卡号段和数量。

    实际设计:表CardStock:CardId(卡种类)、IndetailId(入库单的Id)、CardNum(卡号)...

    解决的sql:

    1 select CardId,IndetailId, (case when sum(1)>1 then cast(MIN(CardNum) as varchar(32))+ '~'+ cast(MAX(CardNum) as varchar(32)) else cast(MIN(CardNum) as varchar(32)) end) AS CardNumSection, sum(1) as CardCount,  from( SELECT CardId ,IndetailId ,CardNum, CardNum - ROW_NUMBER() OVER(partition by CardId ,IndetailId ORDER BY CardNum) AS grp  FROM CardStock) v
    View Code

    其中CardNumSection就是卡号段,若是一张就直接显示卡号就行,完美解决

  • 相关阅读:
    CSS居中布局总结
    Jquery的普通事件和on的委托事件
    sass基础用法
    JS中常遇到的浏览器兼容问题和解决方法
    KVC
    关键字 self
    常见的出现内存循环引用的场景有哪些?
    XCODE中的蓝色文件夹与黄色文件夹
    oc 关键字
    uiwebview 兼容性
  • 原文地址:https://www.cnblogs.com/kungge/p/4684819.html
Copyright © 2011-2022 走看看