专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

sql如何查询明细账及月计累计_数据库

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/5 17:06:41       共计:3584 浏览

sql如何查询明细账及月计累计?

其实这个是个很基础的知识。

如下示例:

DDL:

CREATE TABLE `tbl_fin` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `fin_date` date DEFAULT NULL, `TrueName` varchar(128) DEFAULT NULL, `Money` decimal(10,2) unsigned DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

插入一堆测试数据:

INSERT INTO `tbl_fin` VALUES (1, '2018-01-01', '小明', 100.00);INSERT INTO `tbl_fin` VALUES (2, '2018-01-01', '小明', 100.00);INSERT INTO `tbl_fin` VALUES (3, '2018-01-01', '小明', 100.00);INSERT INTO `tbl_fin` VALUES (4, '2018-01-02', '小明', 100.00);INSERT INTO `tbl_fin` VALUES (5, '2018-01-03', '小明', 100.00);INSERT INTO `tbl_fin` VALUES (6, '2018-01-05', '小红', 100.00);INSERT INTO `tbl_fin` VALUES (7, '2018-01-06', '小红', 100.00);INSERT INTO `tbl_fin` VALUES (8, '2018-01-08', '小红', 100.00);INSERT INTO `tbl_fin` VALUES (9, '2018-02-08', '小红', 100.00);INSERT INTO `tbl_fin` VALUES (10, '2018-03-08', '小红', 100.00);INSERT INTO `tbl_fin` VALUES (11, '2018-04-08', '小红', 100.00);INSERT INTO `tbl_fin` VALUES (12, '2018-05-08', '小红', 100.00);INSERT INTO `tbl_fin` VALUES (13, '2018-06-08', '小红', 100.00);INSERT INTO `tbl_fin` VALUES (14, '2018-06-08', '小明', 3.40);INSERT INTO `tbl_fin` VALUES (15, '2018-06-08', '小明', 398.49);INSERT INTO `tbl_fin` VALUES (16, '2018-06-08', '小明', 982.24);INSERT INTO `tbl_fin` VALUES (17, '2018-06-08', '小明', 715.72);INSERT INTO `tbl_fin` VALUES (18, '2018-05-08', '小明', 631.88);INSERT INTO `tbl_fin` VALUES (19, '2018-05-08', '小明', 12.25);INSERT INTO `tbl_fin` VALUES (20, '2018-05-08', '小明', 165.59);INSERT INTO `tbl_fin` VALUES (21, '2018-05-08', '小明', 791.23);INSERT INTO `tbl_fin` VALUES (22, '2018-04-08', '小明', 459.35);INSERT INTO `tbl_fin` VALUES (23, '2018-04-08', '小明', 923.06);INSERT INTO `tbl_fin` VALUES (24, '2018-04-08', '小明', 237.28);INSERT INTO `tbl_fin` VALUES (25, '2018-03-08', '小明', 417.18);INSERT INTO `tbl_fin` VALUES (26, '2018-03-08', '小明', 374.10);INSERT INTO `tbl_fin` VALUES (27, '2018-03-08', '小明', 618.93);INSERT INTO `tbl_fin` VALUES (28, '2018-03-08', '小明', 972.37);INSERT INTO `tbl_fin` VALUES (29, '2018-02-08', '小明', 5.04);INSERT INTO `tbl_fin` VALUES (30, '2018-02-08', '小明', 108.08);INSERT INTO `tbl_fin` VALUES (31, '2018-02-08', '小明', 525.31);INSERT INTO `tbl_fin` VALUES (32, '2018-01-08', '小明', 302.32);INSERT INTO `tbl_fin` VALUES (33, '2018-01-08', '小明', 935.65);INSERT INTO `tbl_fin` VALUES (34, '2018-01-08', '小明', 771.28);INSERT INTO `tbl_fin` VALUES (35, '2018-01-09', '小明', 49.48);INSERT INTO `tbl_fin` VALUES (36, '2018-01-09', '小红', 933.54);INSERT INTO `tbl_fin` VALUES (37, '2018-01-09', '小红', 519.26);INSERT INTO `tbl_fin` VALUES (38, '2018-01-09', '小红', 795.69);INSERT INTO `tbl_fin` VALUES (39, '2018-01-09', '小红', 420.67);

然后可以进入主题了。

获取明细账:

1、根据某用户获取某月流水账内容:

假设某用户等于“小明”,某月等于“2018-01”。

SELECT * FROM tbl_fin WHERE TrueName = '小明' AND DATE_FORMAT(fin_date,'%Y-%m') = '2018-01' ORDER BY fin_date ASC

其中,

TrueName = '小明'表示筛选记录中TrueName为小明的记录

DATE_FORMAT(fin_date,'%Y-%m') 的意思是格式化fin_date的日期格式,输出为YYYY-mm

ORDER BY fin_date ASC 意思是记录根据fin_date从小到大排序。

获取的结果就是小明再2018年01月的明细账。

第二、就是月累计账:

假设需要获取“小明”的每月账单。

SELECT TrueName,SUM(Money) as Money,DATE_FORMAT(fin_date,'%Y-%m') as dateMonth FROM tbl_fin WHERE TrueName = '小明' GROUP BY CONCAT(TrueName,DATE_FORMAT(fin_date,'%Y-%m')) ORDER BY dateMonth ASC

SUM(Money) as Money, 的意思是统计(加)Money的总金额,

DATE_FORMAT(fin_date,'%Y-%m') as dateMonth ,把日期格式化为年月的形式

GROUP BY CONCAT(TrueName,DATE_FORMAT(fin_date,'%Y-%m')) 这里需要拆开来理解,

1、CONCAT(TrueName,DATE_FORMAT(fin_date,'%Y-%m')) 意思是把TrueName和年月日进行字符合并。

2、GROUP BY 意思是根据这个进行分组统计。

得出的结果就是小明每月累计的账单情况:

上面只是一个初步的SQL教程,测试环境是MYSQL 5.5.47,SQL Server的写法有所不同。

另外正常情况下,一般用于统计或筛选的,建议加上索引。特别是财务的统计计算。

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:如何用SQLiteDeveloper导入数据库文件_数据库 | ·下一条:SQLServer某一数据表最多能存储多少条记录_数据库

Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有