当前位置:  数据库>mysql

使用SQL实现小计,合计以及排序

    来源: 互联网  发布时间:2014-10-09

    本文导语:  --说明:个人学习笔记,实现小计合计显示,分组按BANK_ID+OP_DATE升序排序 代码如下:--测试数据CREATE TABLE #TB(ID VARCHAR(10),BANK_ID VARCHAR(10),OP_DATE VARCHAR(10),OPERATOR_NO VARCHAR(20),AMT DECIMAL(10,2))INSERT #TB SELECT '1111','001','20121210',1234567,111.00UNION...

--说明:个人学习笔记,实现小计合计显示,分组按BANK_ID+OP_DATE升序排序

代码如下:

--测试数据
CREATE TABLE #TB(ID VARCHAR(10),BANK_ID VARCHAR(10),OP_DATE VARCHAR(10),OPERATOR_NO VARCHAR(20),AMT DECIMAL(10,2))
INSERT #TB SELECT '1111','001','20121210',1234567,111.00
UNION ALL SELECT '2222','002','20121210',1234567,222.00
UNION ALL SELECT '3333','001','20121112',1234567,250.00
UNION ALL SELECT '4444','002','20121110',1234567,330.00
UNION ALL SELECT '5555','001','20121210',1234567,300.00
UNION ALL SELECT '6666','002','20121112',1234567,150.00
GO

--查询
SELECT A.ID
 ,A.BANK_ID
 ,A.AMT
 ,B.OP_DATE
 ,B.OPERATOR_NO
FROM
(
(SELECT
 ID=CASE
  WHEN GROUPING(BANK_ID)=1 THEN '合计'
  WHEN GROUPING(ID)=1 THEN '小计'
  ELSE ID END
 ,BANK_ID
    ,SUM(AMT) AMT
    ,ORDER_SIGN1=GROUPING(BANK_ID),ORDER_SIGN2=BANK_ID
    ,ORDER_SIGN3=GROUPING(ID)
FROM #TB
GROUP BY BANK_ID,ID WITH ROLLUP
HAVING GROUPING(ID)=1
UNION ALL --先得出表的统计,再加上表中的数据
SELECT ID
 ,BANK_ID
 ,AMT
 ,ORDER_SIGN1=0,ORDER_SIGN2=BANK_ID
    ,ORDER_SIGN3=0
 FROM #TB) A
LEFT JOIN --为了显示出OP_DATE、OPERATOR_NO
(SELECT ID
 ,OP_DATE
 ,OPERATOR_NO
FROM #TB) B ON A.ID = B.ID
) ORDER BY ORDER_SIGN1,ORDER_SIGN2,ORDER_SIGN3,OP_DATE

GO

--删除测试
DROP TABLE #TB

/*--测试结果
ID BANK_ID AMT OP_DATE OPERATOR_NO
3333 001 250.00 20121112 1234567
5555 001 300.00 20121210 1234567
1111 001 111.00 20121210 1234567
小计 001 661.00 NULL NULL
4444 002 330.00 20121110 1234567
6666 002 150.00 20121112 1234567
2222 002 222.00 20121210 1234567
小计 002 702.00 NULL NULL
合计 NULL 1363.00 NULL NULL
--*/


    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux下top命令详解包括top命令参数使用及结果(virt,res,shr)排序举例说明
  • 数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)
  • ll 命令输出,使用sort排序问题
  • linux中使用sort命令进行排序的问题
  • C#中使用快速排序按文件创建时间将文件排序的源码
  • sqlServer使用ROW_NUMBER时不排序的解决方法
  • sql server分组排序之row_number()over函数的使用
  • 哪位有使用XML创建可排序、分页的数据显示页面的例程?多多指教噢!
  • sql Server使用ROW_NUMBER时不排序的实例代码
  • 不使用php api函数实现数组的交换排序示例
  • 使用awk对某列数据进行排序和uniq的问题
  • oracle使用order by排序null值如何处理
  • PHP中使用asort进行中文排序失效的问题处理
  • 探讨:如何使用委托,匿名方法对集合进行万能排序
  • Java使用选择排序法对数组排序实现代码
  • 如何使用VC库函数中的快速排序函数
  • jQuery表格排序组件-tablesorter使用示例
  • C语言使用stdlib.h库函数的二分查找和快速排序的实现代码
  • 算法之排序算法的算法思想和使用场景总结
  • php使用递归与迭代实现快速排序示例
  • java如何对map进行排序详解(map集合的使用)
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • c#中SAPI使用总结——SpVoice的使用方法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3