首页 置换 选车 估价 问答 生活 经销商 车管所 汽车资讯 汽车销量 车牌查询 今日油价 天气预报
您的位置: 首页 > 生活 > 生活 > sql行列互换语句(SQL中如何实现行列互换)
sql行列互换语句(SQL中如何实现行列互换)
更新时间:2024-08-03 02:24:41

在工作中大家是否遇到过需要将行与列进行互换的情况?我们知道在Excel中只需要复制然后选择性粘贴时选择粘贴内容转置就可以轻松进行行列互换了,那在SQL中怎么实现行列互换呢?

现在有一张某超市的销售业绩表图1想要变成为图2,如何实现?

sql行列互换语句(SQL中如何实现行列互换)1

图1 图2

我们先将两张表进行对比发现图2中除了月份列一致,后面3列数据与图1都不一致,需要我们自己创建后面的3列数据

sql行列互换语句(SQL中如何实现行列互换)2

处理步骤

首先需要查找月份和A门店,B门店,C门店,如果仅仅查找这几个条件会是什么结果?

Select 月份,'A门店','B门店','C门店'

From 销售业绩表

得到下图

sql行列互换语句(SQL中如何实现行列互换)3

我们发现与上面的图与我们所需要的图2除了第一列与第一行一致外,其余值的部分并不是我们想要的,那接下来我们如何将这部分数据改成我们需要的图2的数据呢?

sql行列互换语句(SQL中如何实现行列互换)4

其实此处需要用到case表达式,用case语句进行条件判断来替换

case表达式语法如下:

Case ...when条件then表达式

Else 表达式

End

我们来试试把条件带入case表达式中

SELECT 月份,

(case 门店 when'A门店' then 业绩 else 0 END) as 'A门店',

(case 门店 when 'B门店' then 业绩 else 0 END) as 'B门店',

(case 门店 when 'C门店' then 业绩 else 0 END) as 'C门店'

from 销售业绩表

group by 月份

得到下面的结果

sql行列互换语句(SQL中如何实现行列互换)5

观察这个结果发现仍不是我们想要的表,这张表里有很多0,怎么才能去掉0呢?其实只要取最大值就可以了,我们来试试吧

SELECT 月份,

max(case 门店 when'A门店' then 业绩 else 0 END) as 'A门店',

max(case 门店 when 'B门店' then 业绩 else 0 END) as 'B门店',

max(case 门店 when 'C门店' then 业绩 else 0 END) as 'C门店'

from 销售业绩表

group by 月份

sql行列互换语句(SQL中如何实现行列互换)6

这样我们就得到了行列互换后的表(图2)。大家学会了吗?以后在sql中遇到需要行列互换记得用这个模板哦!

,
相关推荐RECOMMEND
40升是多少斤
根据物质不同、密度不同,重量也不同。质量=密度×体积,当密度不同是不同物质质量也不同,当物质为水时,水的密度为1千克每立方分米,40升为40立方分米,所以40升的质量为40*1=40千克,...
早春怎么穿搭才够时尚
1、长款风衣搭配阔腿裤高跟短靴,不但非常的知性优雅,同时又能够很好的彰显出个人独特的气质,非常的时尚。2、宽松毛衣搭配白色镂空半身裙,非常文艺的穿搭,不但有很好的显瘦效果,同时又非常的经典时尚。3、针...
炸牛排怎么做好吃
1、准备好用料:牛肉200克,面包糠、淀粉、鸡蛋、玉米油各适量。2、首先是将牛肉洗干净,然后切成薄片。3、牛肉撒上黑胡椒酱,酱牛肉味上30分钟左右。4、将味好的牛排裹上淀粉,蘸上鸡蛋液,再滚上面包糠,...
过期的护手霜有哪些用处
1、防静电:夏天裙子和脚上的丝袜容易黏在一起,只要将护手霜涂在手上,在穿着丝袜的大腿上来回涂抹一下,就会有水分附着在丝袜上,裙子和丝袜间就不容易因产生静电而黏在一起了。2、擦镜子:镜子总是雾雾的,在柔...
24道拐在哪个省哪个地区
24道拐在贵州省晴隆县。二十四道拐始建于20世纪30年代,古称鸦关,当地人又称之为半关,是在晴隆县境内的古鸦关驿口凿山开路建成的盘山弯道,长约4公里,每道拐仅几十米长,盘旋曲行于雄峻陡峭的睛隆山脉和磨...
雾霾带什么口罩
1、纱布口罩:仅能过滤较大之颗粒,仅适平时清洁工作时使用。2、外科口罩:适用有感冒发烧咳嗽等有呼吸道...