mysql获取上月月份

查看上个月数据

sql 复制代码
SELECT * FROM table WHERE date_format(time, '%Y %m') = date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),'%Y %m')

查询上个月

sql 复制代码
select date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH), '%m')

行转列

-- 行转列:方法①

sql 复制代码
SELECT
id,
name,
GROUP_CONCAT(CASE WHEN subject = '语文' THEN score END SEPARATOR '') '语文',
GROUP_CONCAT(CASE WHEN subject = '数学' THEN score END SEPARATOR '') '数学',
GROUP_CONCAT(CASE WHEN subject = '英语' THEN score END SEPARATOR '') '英语'
FROM test1
GROUP BY name;

-- 行转列:方法②

sql 复制代码
SELECT
id,
name,
SUM(IF(subject = '语文',score,0)) AS '语文',
SUM(IF(subject = '数学',score,0)) AS '数学',
SUM(IF(subject = '英语',score,0)) AS '英语'
FROM test1
GROUP BY name;

列转行

sql 复制代码
SELECT name,'语文' AS subject,语文 AS score FROM test2
UNION ALL
SELECT name,'数学' AS subject,数学 AS score FROM test2
UNION ALL
SELECT name,'英语' AS subject,英语 AS score FROM test2
ORDER BY name ASC,subject DESC;

总结:

行转列主要借助:CASE WHEN或IF,这两种都是判断条件,思路>当满足某个学科的时候我们把它当做新的一列。

列转行主要借助:UNION或UNION ALL,这两个都是把结果集合并起来,思路> 每次查询学生名称(基本列)和学科的其中一列的值,再把它们组合起来,这样你的结果集就是只有学生名称和科目成绩两列了。(我这里多加了一列科目)

相关推荐
有想法的py工程师6 分钟前
PostgreSQL 深入heap_update() 与 HOT 机制(附源码级解析)
数据库·postgresql
qq_342295821 小时前
如何为容器内多个列表实现统一滚动条.txt
jvm·数据库·python
qq_206901392 小时前
CSS如何引入自适应图标_利用svg外链配合css控制颜色
jvm·数据库·python
weixin_408717772 小时前
Go语言怎么编译Linux程序_Go语言编译Linux可执行文件教程【避坑】
jvm·数据库·python
APIshop2 小时前
Python 爬虫获取京东商品详情 API 接口实战指南
java·服务器·数据库
XmasWu12252 小时前
【Hermes Agent进阶】开发自定义技能
网络·数据库
刘~浪地球2 小时前
数据库性能优化实战
数据库·性能优化
2401_865439632 小时前
CSS怎么在flex布局中实现项目均分间距_设置justify-content space-evenly
jvm·数据库·python
m0_493934532 小时前
CSS如何实现输入框禁用样式_使用-disabled伪类设定
jvm·数据库·python