使用SQL实现小计,合计以及排序
这篇文章主要为大家详细介绍了使用SQL实现小计,合计以及排序,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
--说明:个人学习笔记,实现小计合计显示,分组按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_NOFROM((SELECTID=CASEWHEN 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 #TBGROUP BY BANK_ID,ID WITH ROLLUPHAVING GROUPING(ID)=1UNION ALL--先得出表的统计,再加上表中的数据SELECT ID,BANK_ID,AMT,ORDER_SIGN1=0,ORDER_SIGN2=BANK_ID ,ORDER_SIGN3=0FROM #TB) ALEFT JOIN--为了显示出OP_DATE、OPERATOR_NO(SELECT ID,OP_DATE,OPERATOR_NOFROM #TB) B ON A.ID = B.ID) ORDER BY ORDER_SIGN1,ORDER_SIGN2,ORDER_SIGN3,OP_DATE
GO
--删除测试DROP TABLE #TB
/*--测试结果IDBANK_IDAMTOP_DATEOPERATOR_NO3333001250.002012111212345675555001300.002012121012345671111001111.00201212101234567小计001661.00NULLNULL4444002330.002012111012345676666002150.002012111212345672222002222.00201212101234567小计002702.00NULLNULL合计NULL1363.00NULLNULL--*/
注:关于使用SQL实现小计,合计以及排序的内容就先介绍到这里,更多相关文章的可以留意