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

 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

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

sqlserver卡号段分组的更多相关文章

  1. 【C】EM卡韦根32/24格式卡号转换的实现

    写在前面 第八周实验报告的deadline马上就要到了,大家都在奋笔疾书.这次的实验报告中有一个十分秃然的任务,要求学生用C语言编写一段代码,来处理编码问题. 我的ddl是在第七周,所以较早地解决了这 ...

  2. SQLSERVER中按年月分组

    SQLSERVER中按年月分组 一个表有三个字段id,dt,d  分别存放id,时间,数值  id    dt    d 1 2004-08-11 12:12:00.000 9  2 2005-09- ...

  3. 获得SQLSERVER的表字段等架构信息

    获得SQLSERVER的表字段等架构信息 SELECT 表名 = CASE WHEN A.COLORDER=1 THEN D.NAME ELSE '' END, 表說明 = CASE WHEN A.C ...

  4. 金蝶核算项目余额表卡号余额与天财商龙CRM卡号余额对比

    金蝶核算项目余额表卡号余额与天财尚龙CRM卡号余额对比 由于历史遗留问题,财务一直不调账,修改核算科目卡号与天财商龙CRM系统一直,只能用VBA把卡号前缀修改成两边一致. 再通过,Power BI D ...

  5. Oracle层次查询和分析函数在号段选取中的应用

    转自:http://www.itpub.net/thread-719692-1-1.html 摘要一组连续的数,去掉中间一些数,如何求出剩下的数的区间(即号段)?知道号段的起止,如何求出该号段内所有的 ...

  6. Linux下读取RFID卡号(C串口编程)

    由于项目需要用到RFID.GPRS.摄像头等模块所以便看了一下,整理了一下学习思路,本篇先是整理一下串口读取RFID卡号的程序思路,后面还会更其他的 RFID模块: 本次采用的是125K的RFID读卡 ...

  7. .net第三方数据库物理卡号同步功能实现

    本地数据库用的是Oracle,第三方数据库是SQL Server,连接字符串保存在web.config里面. 第三方数据库为增量,每次读取要记录读取的最大位置.我是保存在本地txt文件里面. //保存 ...

  8. Xamarin如何使用终端设备的NFC功能传递卡号等信息给Web页面(Android)

    一.前提条件,App必须具有NFC权限. 二.项目中加入监控类NFCCatchActivity.cs [Activity(Label = "NFCCatch",Theme = &q ...

  9. vue实现一个会员卡的组件(可以动态传入图片(分出的一个组件)、背景、文字、卡号等)

    自己在写这个组件的时候主要遇到的问题就是在动态传入背景图片或者背景色的时候没能立马顺利写出来,不过现在实现了这个简单组件就和大家分享一下 <template> <div class= ...

随机推荐

  1. 第三十八章 springboot+docker(maven)

    回顾上一章的整个部署过程: 使用"mvn install"进行打包jar 将jar移动到与Dockerfile文件相同的文件夹下 编写Dockerfile文件 使用"do ...

  2. workerman 的回调函数

    接下来,记录一下workerman 的回调函数 <?php /** * Created by PhpStorm. * User: zeopean * Date: 2016-08-26 * Tim ...

  3. ghost 还原系统时,遇到error 10010,提示can not open image file

    昨天系统有点问题,在用Ghost还原系统时,一直提示10010错误,提示can not open image file 想着可能是备份文件的问题,从另一台电脑上重新拷过来一份,仍然不行,Ghost还是 ...

  4. 【随笔】vmstat性能监测

    vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.相比top,vmstat可以看到整个机 ...

  5. [转]Theano下用CNN(卷积神经网络)做车牌中文字符OCR

    Theano下用CNN(卷积神经网络)做车牌中文字符OCR 原文地址:http://m.blog.csdn.net/article/details?id=50989742 之前时间一直在看 Micha ...

  6. DL4J (DeepLearning for java)

    http://deeplearning4j.org/lstm.html A Beginner’s Guide to Recurrent Networks and LSTMs Contents Feed ...

  7. SQL语言和DML相关操作以及相应的运算符

    SQL 1.结构化查询语言 2.特点 a.第四代编程语言,更接近自然语言 b必须有数据库系统解释执行 c.对象名,关键字不区分大小写 d.字符串必须要用单引号引起来,不能用双引号 e.每条语句最后用分 ...

  8. ORA-24550错误

    [oracle@app-148-39 oracledata]$ sqluldr2_linux64_10204.bin USER=xxx/xxx@xxx:1521 charset=AL32UTF8 QU ...

  9. Java里this的作用和用法

    this, 一个官方的说法是,this首先是一个对象,它代表调用这个函数的对象. 根据面向对象的基本语法,每当调用变量或者函数的时候,都要按照类名.变量(函数)的格式来调用,意即每个变量或函数都必须属 ...

  10. 元数据集 DatabaseMetaData ResultSetMetaData