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,这两个都是把结果集合并起来,思路> 每次查询学生名称(基本列)和学科的其中一列的值,再把它们组合起来,这样你的结果集就是只有学生名称和科目成绩两列了。(我这里多加了一列科目)

相关推荐
weixin_45975394几秒前
MySQL主从同步跳过错误影响一致性_使用pt-table-sync修复
jvm·数据库·python
kexnjdcncnxjs6 分钟前
如何解决Oracle 12c以上版本的ORA-65096_C##公共用户前缀限制
jvm·数据库·python
zhoutongsheng19 分钟前
MySQL触发器无法触发的原因分析_MySQL触发器排查指南
jvm·数据库·python
愈努力俞幸运19 分钟前
function calling与mcp
android·数据库·redis
2301_7796224121 分钟前
不同品牌SSD对HTML函数工具加载速度影响大吗_存储测试汇总【汇总】
jvm·数据库·python
dinglu1030DL33 分钟前
golang如何实现告警分级与升级_golang告警分级与升级实现步骤
jvm·数据库·python
xcLeigh34 分钟前
Python开篇:撬动未来的万能钥匙 —— 从入门到架构的全链路指南
数据库·python·架构·教程·应用·网页
m0_4636722036 分钟前
Golang如何做图片处理缩放_Golang图片处理教程【收藏】
jvm·数据库·python
m0_7485548137 分钟前
SQL批量更新状态机字段_使用CASE表达式一次性处理
jvm·数据库·python
m0_6245785939 分钟前
安装宝塔面板提示缺少必要的依赖包_批量安装系统库
jvm·数据库·python