mysql 坚向变横向_(排班表一)使用SQL语句使数据从坚向排列转化成横向排列

知识重点:

1.extract(day from schedule01::timestamp)=13

Extract 属于 SQL 的 DML(即数据库管理语言)函数,同样,InterBase 也支持 Extract,它主要用于从一个日期或时间型的字段内抽取年、月、日、时、分、秒数据,因此,它支持其关健字 YEAR、MONTH、DAY、HOUR、MINUTE、SECOND、WEEKDAY、YEARDAY。

Extract 的使用语法为:

EXTRACT(关健字 FROM 日期或时间型字段)

如:extract(year from schedule01)=2017从日期中提取年份

2.max()函数:取最大值

3.case()函数的嵌套

注意嵌套case()函数时,每个case的开始和结束。

排班功能:现有两个人员(A和B),他们在不同日期的值班状态(state)不同,现在要查询他们在2017.6月的值班信息

表结构如下:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 CREATE TABLE public.temp_schedule2

3 (4

5 id integer NOT NULL DEFAULT nextval('temp_schedule_id_seq'::regclass),6

7 schedule01 timestamp without time zone,--日期8

9 schedule03 character varying(255),--姓名10

11 state character varying(255),--值班状态(0休 1班)12

13 CONSTRAINT temp_schedule_pkey PRIMARY KEY (id)14

15 )

View Code

1.查询SQL语句:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 select schedule03,schedule01,state fromtemp_schedule2

3 where extract(year from schedule01)=2017 and extract(month from schedule01)=6

4

5 order by schedule03,schedule01;

View Code

显示为:

ee085b7c75bd8f302b49bf41cfd79f17.png

2.现在需要根据(6月的)日期,从1号开始根据人员名称横向合并排列数据(即只显示两行)

显示效果如下:

2c9603098e752d7b323cbff849354a20.png

实现的SQL语句如下:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 select schedule03 asname2

3 ,max(case when extract(day from schedule01::timestamp)=1 then state end) asday14

5 ,max(case when extract(day from schedule01::timestamp)=2 then state end) asday26

7 ,max(case when extract(day from schedule01::timestamp)=3 then state end) asday38

9 ,max(case when extract(day from schedule01::timestamp)=4 then state end) asday410

11 ,max(case when extract(day from schedule01::timestamp)=5 then state end) asday512

13 ,max(case when extract(day from schedule01::timestamp)=6 then state end) asday614

15 ,max(case when extract(day from schedule01::timestamp)=7 then state end) asday716

17 ,max(case when extract(day from schedule01::timestamp)=8 then state end) asday818

19 ,max(case when extract(day from schedule01::timestamp)=9 then state end) asday920

21 ,max(case when extract(day from schedule01::timestamp)=10 then state end) asday1022

23 ,max(case when extract(day from schedule01::timestamp)=11 then state end) asday1124

25 ,max(case when extract(day from schedule01::timestamp)=12 then state end) asday1226

27 ,max(case when extract(day from schedule01::timestamp)=13 then state end) asday1328

29 fromtemp_schedule30

31 where extract(year from schedule01)=2017 and extract(month from schedule01)=6

32

33 group by schedule03;

View Code

3.将人员的值班状态通过汉字(0休 1班)显示出来,显示效果如下:

5ef0818de4a376cc64170076e8889010.png

SQL语句(主要是实现case的嵌套):

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 select schedule03 asname2

3 ,max(case when extract(day from schedule01::timestamp)=1 then (case when state='0' then '休' else '班' end) end) asday14

5 ,max(case when extract(day from schedule01::timestamp)=2 then (case when state='0' then '休' else '班' end) end) asday26

7 ,max(case when extract(day from schedule01::timestamp)=3 then (case when state='0' then '休' else '班' end) end) asday38

9 ,max(case when extract(day from schedule01::timestamp)=4 then (case when state='0' then '休' else '班' end) end) asday410

11 ,max(case when extract(day from schedule01::timestamp)=5 then (case when state='0' then '休' else '班' end) end) asday512

13 ,max(case when extract(day from schedule01::timestamp)=6 then (case when state='0' then '休' else '班' end) end) asday614

15 ,max(case when extract(day from schedule01::timestamp)=7 then (case when state='0' then '休' else '班' end) end) asday716

17 ,max(case when extract(day from schedule01::timestamp)=8 then (case when state='0' then '休' else '班' end) end) asday818

19 ,max(case when extract(day from schedule01::timestamp)=9 then (case when state='0' then '休' else '班' end) end) asday920

21 ,max(case when extract(day from schedule01::timestamp)=10 then (case when state='0' then '休' else '班' end) end) asday1022

23 ,max(case when extract(day from schedule01::timestamp)=11 then (case when state='0' then '休' else '班' end) end) asday1124

25 ,max(case when extract(day from schedule01::timestamp)=12 then (case when state='0' then '休' else '班' end) end) asday1226

27 ,max(case when extract(day from schedule01::timestamp)=13 then (case when state='0' then '休' else '班' end) end) asday1328

29 fromtemp_schedule30

31 where extract(year from schedule01)=2017 and extract(month from schedule01)=6

32

33 group by schedule03 ;

View Code

知识一点点的累积,技术一点点的提高!加油!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1897. 重新分配字符使所有字符串都相等

文章目录1. 题目2. 解题1. 题目 给你一个字符串数组 words(下标 从 0 开始 计数)。 在一步操作中,需先选出两个 不同 下标 i 和 j,其中 words[i] 是一个非空字符串,接着将 words[i] 中的 任一 字符移动到 words[j] 中…

2015/4/14课堂练习

1.设计题目 书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示: 本     数量 折扣 …

python 图片背景前景分离_【绝了】用 Python 把朋友头像变表情包!

正文在日常生活中,我们经常会存取一些朋友们的丑照,在这个项目中,我们以萌萌哒的熊猫头作为背景,然后试着在背景图上加入朋友们的照片,效果如下图所示。实现步骤导入朋友的照片(前景照片);处理前景照片(缩放…

LeetCode 1899. 合并若干三元组以形成目标三元组

文章目录1. 题目2. 解题1. 题目 三元组 是一个由三个整数组成的数组。 给你一个二维整数数组 triplets ,其中 triplets[i] [ai, bi, ci] 表示第 i 个 三元组 。 同时,给你一个整数数组 target [x, y, z] ,表示你想要得到的 三元组 。 为了…

openpyxl 读写 excel

import openpyxl book openpyxl.load_workbook(b.xlsx) # 读取 # sheet book["name_tab"] sheet book.active # rowsheet.max_row # 行数 columnsheet.max_column # 列数 print(row) print(column) for r in range(2, row1): # 跳过表头,行号是从1开…

opengl计算帧率_或许是迄今为止第一篇讲解 fps 计算原理的文章吧

前言fps,是 frames per second 的简称,也就是我们常说的“帧率”。在游戏领域中,fps 作为衡量游戏性能的基础指标,对于游戏开发和手机 vendor 厂商都是非常重要的数据,而计算游戏的 fps 也成为日常测试的基本需求。目前…

041、基于CNN的样式迁移

之——基于CNN的滤镜 目录 之——基于CNN的滤镜 杂谈 正文 1.基于CNN的样式迁移 2.实现 杂谈 通过CNN的特征提取,可以实现将一个图片的样式模式特征迁移到另一张图像上。 正文 1.基于CNN的样式迁移 就是在某些层的输出上用其他的图片进行监督。 2.实现 一般来…

LeetCode 483. 最小好进制(二分查找)

文章目录1. 题目2. 解题1. 题目 对于给定的整数 n, 如果 n 的 k(k>2)进制数的所有数位全为1,则称 k(k>2)是 n 的一个好进制。 以字符串的形式给出 n, 以字符串的形式返回 n 的 最小 好进制。 示例 1&#xff…

LeetCode LCS 01. 下载插件

文章目录1. 题目2. 解题1. 题目 小扣打算给自己的 VS code 安装使用插件,初始状态下带宽每分钟可以完成 1 个插件的下载。 假定每分钟选择以下两种策略之一: 使用当前带宽下载插件将带宽加倍(下载插件数量随之加倍) 请返回小扣完成下载 n …

LeetCode LCS 02. 完成一半题目(计数+排序)

文章目录1. 题目2. 解题1. 题目 有 N 位扣友参加了微软与力扣举办了「以扣会友」线下活动。 主办方提供了 2*N 道题目,整型数组 questions 中每个数字对应了每道题目所涉及的知识点类型。 若每位扣友选择不同的一题,请返回被选的 N 道题目至少包含多少种…

摄像头图像分析目标物体大小位置_单个运动摄像头估计运动物体深度,谷歌挑战新难题...

雷锋网 AI 科技评论按:人类视觉系统有一个我们习以为然但其实极其强大的功能,那就是可以从平面图像反推出对应的三维世界的样子。即便在有多个物体同时移动的复杂环境中,人类也能够对这些物体的几何形状、深度关系做出合理的推测。然而类似的…

LeetCode LCS 03. 主题空间(广度优先搜索BFS)

文章目录1. 题目2. 解题1. 题目 「以扣会友」线下活动所在场地由若干主题空间与走廊组成,场地的地图记作由一维字符串型数组 grid,字符串中仅包含 “0"~"5” 这 6 个字符。 地图上每一个字符代表面积为 1 的区域,其中 …

SQL SERVER PIVOT 行转列、列传行

在数据库操作中,有些时候我们遇到需要实现“行转列”的需求,例如一下的表为某店铺的一周收入情况表: WEEK_INCOME(WEEK VARCHAR(10),INCOME DECIMAL) 我们先插入一些模拟数据: INSERT INTO WEEK_INCOME SELECT 星期一,1000 UNION…

mysql cluster 查看数据库表名称_MySQL Cluster如何创建磁盘表方法解读

MySQL Cluster采用一系列的Disk Data objects来实现磁盘表;接下来为您详细介绍一、概念MySQL Cluster采用一系列的Disk Data objects来实现磁盘表。Tablespaces:作用是作为其他Disk Data objects的容器。Undo log files:存储事务进行回滚需要的信息&…

(运算符) 运算符

& 运算符既可作为一元运算符也可作为二元运算符。 备注 一元 & 运算符返回操作数的地址(要求 unsafe 上下文)。 为整型和 bool 类型预定义了二进制 & 运算符。 对于整型,& 计算操作数的逻辑按位“与”。 对于 bool 操作数&am…

LeetCode 1903. 字符串中的最大奇数

文章目录1. 题目2. 解题1. 题目 给你一个字符串 num ,表示一个大整数。 请你在字符串 num 的所有 非空子字符串 中找出 值最大的奇数 ,并以字符串形式返回。如果不存在奇数,则返回一个空字符串 “” 。 子字符串 是字符串中的一个连续的字符…

mysql分页插件springboot_SpringBoot--使用Mybatis分页插件

1、导入分页插件包和jpa包org.springframework.bootspring-boot-starter-data-jpacom.github.pagehelperpagehelper-spring-boot-starter1.2.52、增加分页配置# 主键自增回写方法,默认值MYSQL,详细说明请看文档mapper:identity: MYSQL# 设置 insert 和 update 中,是…

LeetCode 1904. 你完成的完整对局数

文章目录1. 题目2. 解题1. 题目 一款新的在线电子游戏在近期发布,在该电子游戏中,以 刻钟 为周期规划若干时长为 15 分钟 的游戏对局。 这意味着,在 HH:00、HH:15、HH:30 和 HH:45 ,将会开始一个新的对局,其中 HH 用一…

LeetCode 1905. 统计子岛屿(BFS)

文章目录1. 题目2. 解题1. 题目 给你两个 m x n 的二进制矩阵 grid1 和 grid2 ,它们只包含 0 (表示水域)和 1 (表示陆地)。 一个 岛屿 是由 四个方向 (水平或者竖直)上相邻的 1 组成的区域。 任…

vue是什么软件_Angular vs React vs Vue:2020年的最佳选择是什么?

在2020年,想象没有HTML,CSS和Javascript的Web开发是不切实际的。 Javascript是Web应用程序前端开发的灵魂。 如果您登陆此页面,那么我认为您在Java语言和Java编程语言的不同框架和库之间感到困惑。企业和软件开发人员最常见的一些查询是&…