SQL行转列

1.SQL行转列

1.1 test表结构

year, month, amout

1.2 test表数据


1.3 查询SQL语句

SELECT
	a.`year`,
	m1,
	m2,
	m3,
	m4
FROM
	(
		(
			SELECT
				`year`,
				amout AS m1
			FROM
				test
			WHERE
				`month` = 1
		) a
		LEFT JOIN (
			SELECT
				`year`,
				amout AS m2
			FROM
				test
			WHERE
				`month` = 2
		) b ON a.`year` = b.`year`
		LEFT JOIN (
			SELECT
				`year`,
				amout AS m3
			FROM
				test
			WHERE
				`month` = 3
		) c ON a.`year` = c.`year`
		LEFT JOIN (
			SELECT
				`year`,
				amout AS m4
			FROM
				test
			WHERE
				`month` = 4
		) d ON a.`year` = d.`year`
	)


1.4 查询结果


2.查询没门课都大于80分的学生


2.1 student表结构

name, course, marks

2.2 student表数据

2.3 查询SQL

SELECT
	b.`name`,
	b.course_nums,
	a.sc_course_nums
FROM
	(
		SELECT
			`name`,
			COUNT(course) AS course_nums
		FROM
			student
		GROUP BY
			`name`
	) b
LEFT JOIN (
	SELECT
		`name` AS sc_name,
		COUNT(course) AS sc_course_nums
	FROM
		student
	WHERE
		marks >= 80
	GROUP BY
		`name`
) a ON a.sc_name = b.`name`
AND b.course_nums = a.sc_course_nums
WHERE
	sc_course_nums IS NOT NULL


2.4 查询结果



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值