SQL行列互换

本文介绍了一种使用SQL查询特定格式数据的方法。通过子查询和CASE WHEN THEN语句,实现了从简单的销售记录表中提取按年份和季度分组的销售数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:数据库中有一张如下所示的表,表名为sales。

季度销售量
1991111
1991212
1991313
1991414
1992121
1992222
1992323
1992424

要求:写一个SQL语句查询出如下所示的结果。

一季度二季度三季度四季度
199111121314
199221222324

 这里只贴mysql中查询答案,最近开发用的都是mysql数据库。貌似oracle有更简洁的写法。

最简单的方法,子查询:

SELECT s.`year`,
(SELECT sa.`saleAmount`FROM sales sa WHERE sa.`year`=s.`year` AND sa.`quarter`=1) AS '第一季度',
(SELECT sa.`saleAmount`FROM sales sa WHERE sa.`year`=s.`year` AND sa.`quarter`=2) AS '第二季度',
(SELECT sa.`saleAmount`FROM sales sa WHERE sa.`year`=s.`year` AND sa.`quarter`=3) AS '第三季度',
(SELECT sa.`saleAmount`FROM sales sa WHERE sa.`year`=s.`year` AND sa.`quarter`=4) AS '第四季度'
FROM sales s GROUP BY s.`year` 

这是参考别人的写法,用case when then

SELECT s.`year` AS '年度',
(CASE WHEN s.`quarter`=1 THEN s.`saleAmount`  END) AS '第一季度',
(CASE WHEN s.`quarter`=1 THEN s.`saleAmount`  END) AS '第二季度',
(CASE WHEN s.`quarter`=1 THEN s.`saleAmount`  END) AS '第三季度',
(CASE WHEN s.`quarter`=1 THEN s.`saleAmount`  END) AS '第四季度'
FROM sales s GROUP BY s.`year`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值