DROP TABLE IF EXISTS `T_ROTA_RECORD`;

CREATE TABLE `T_ROTA_RECORD` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`duty_date` date NOT NULL DEFAULT '0000-00-00' COMMENT '值班日期',
`duty_turn` tinyint(4) NOT NULL DEFAULT '' COMMENT '值班班次,0:全天班 1:早班 2:中班 3:晚班',
`provider_id` int(11) DEFAULT '' COMMENT '值班对象ID,T_ROTA_PROVIDER.id',
`is_delete` tinyint(2) NOT NULL DEFAULT '' COMMENT '是否被删除:0-否;1-是',
`org_code` varchar(128) DEFAULT '""' COMMENT '企业或部门编码',
`is_noticed` tinyint(2) NOT NULL DEFAULT '' COMMENT '是否已经通知(0:否,1:是)',
`update_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '数据更新时间,默认为当前时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='值班记录表'; /*Data for the table `T_ROTA_RECORD` */ insert into `T_ROTA_RECORD`(`id`,`duty_date`,`duty_turn`,`provider_id`,`is_delete`,`org_code`,`is_noticed`,`update_time`) values (1,'2018-05-25',1,1,0,'330100.000002.001',0,'2018-05-25 11:00:24'), (2,'2018-05-25',2,2,0,'330100.000002.001',0,'2018-05-25 11:00:53'), (3,'2018-05-25',3,3,0,'330100.000002.001',0,'2018-05-25 11:01:28'), (4,'2018-05-26',1,2,0,'330100.000002.001',0,'2018-05-25 11:02:25'), (5,'2018-05-27',1,1,0,'330100.000002.001',0,'2018-05-25 11:02:52'), (6,'2018-05-25',1,4,0,'330100.000002.002',0,'2018-05-25 11:09:34'), (7,'2018-05-26',1,5,0,'330100.000002.002',0,'0000-00-00 00:00:00'), (8,'2018-05-26',2,4,0,'330100.000002.002',0,'2018-05-25 11:10:18'), (9,'2018-05-26',3,6,0,'330100.000002.002',0,'2018-05-25 11:10:44'), (10,'2018-05-27',0,4,0,'330100.000002.002',0,'0000-00-00 00:00:00');

查询一段时间内每天的数据,按天将数据封装进行封存,同一天的数据封装成list,如何实现呢?

抽象成一对多的关系,即同一天对应多条数据,同一天必须保证是同一条数据。

SELECT
a.`id`,
a.`duty_date`,
b.`duty_turn`,
b.provider_id,
b.is_delete,
b.org_code,
b.is_noticed,
b.update_time
FROM
(SELECT
id,
duty_date
FROM
T_ROTA_RECORD
WHERE is_delete = 0
-- AND org_code = '330100.000002.001'
GROUP BY duty_date) a
LEFT JOIN
(SELECT
duty_date,
duty_turn,
provider_id,
is_delete,
org_code,
is_noticed,
update_time
FROM
T_ROTA_RECORD
WHERE is_delete = 0
-- AND org_code = '330100.000002.001'
GROUP BY duty_date,
duty_turn ) b
ON a.`duty_date` = b.`duty_date` WHERE b.org_code = '330100.000002.001'
AND a.duty_date >= '2018-05-25'
AND a.duty_date <= '2018-05-28'
-- and b.provider_id = 1
ORDER BY a.`duty_date`, b.duty_turn

这里的a.id 不可省略,只有加上才能表示同一天是同一条数据。

SQL——查询一段时间内每天的数据,按天将数据封装进行封存的更多相关文章

  1. sql查询某段时间内的数据

    查询半小时内数据的方法 1.select * from 表名 where datediff(minute,createtime,getdate())<30 2.select * from 表名 ...

  2. sql 查询一段时间内某个时间点数据

     SELECT  CONVERT(VARCHAR(10), dtCreateTime, 120) AS dtStatisticsCreateDate, COUNT(1) AS nStatisticsC ...

  3. SQL查询某一字段重复的数据

    查询出重复记录 select * from 数据表 WHERE 重复记录字段 in ( select 重复记录字段 from  数据表 group by 重复记录字段 having count(重复记 ...

  4. 用sql获取一段时间内的数据

    我把我CSDN写的   搬来博客园了.. SELECT * FROM 表名 WHERE timestampdiff(MINUTE, SYSDATE(), send_time) <=60 AND ...

  5. postgre查询一段时间内的数据

    select * from zaiko where createtime between (now() - interval '3 Days') and now() ; select * from z ...

  6. sql查询当天,一周,一个月数据的语句

    --查询当天:  select * from info where DateDiff(dd,datetime,getdate())=0 --查询24小时内的: select * from info w ...

  7. Sql查询除ID以外相同的数据

    id    NAME    AGE1    n1         12    n1         13    n2         24    n2         25    n22       ...

  8. sql 查询不存在左表的数据

    select * from zyz_mgr_wlcyiduifu a left join WLCInformation b ona.wlcId=b.WLCInvestorApplyID where b ...

  9. SQL查询某个时间段共多少条数据

    select COUNT(*) from (表名) where (时间字段)between '2012-05-01 00:00:00' and '2012-05-31 23:59:59' 获取ASP. ...

随机推荐

  1. C语言实现mq收发数据的函数

    amqsget.c 从mq中读取消息 #include <stdio.h> #include <stdlib.h> #include <string.h> #inc ...

  2. 【IBM-WALA】Step by Step : use WALA to generate System Dependency Graph PDF and Dot File (Mac)

    Preparations: 1. IDE : eclipse (my version is luna) 2. maven (my version is 3.5.0) 3. git 4. JAVA 1. ...

  3. 使用 JdbcTemplate 查询数据时报错:列名无效(已解决)

    又犯了一个错误. 争取没有下次了. 就算再犯,也要知道去哪找答案. 所以,记录一下,以示警戒. 报错 使用 JdbcTemplate 查询数据时,出现异常: PreparedStatementCall ...

  4. B - Hamburgers

    Polycarpus loves hamburgers very much. He especially adores the hamburgers he makes with his own han ...

  5. python-and和 or用法

    python中的逻辑运算 and和or执行逻辑运算,但是它们不会返回bool值,而是返回它们进行比较的值之一 and >>> 1 and 2 取2 >>>1 and ...

  6. 洛谷试炼场-简单数学问题-P1088 火星人

    洛谷试炼场-简单数学问题 A--P1088 火星人 Description 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法 ...

  7. Java NIO 读取文件、写入文件、读取写入混合

    前言 Java NIO(new/inputstream outputstream)使用通道.缓冲来操作流,所以要深刻理解这些概念,尤其是,缓冲中的数据结构(当前位置(position).限制(limi ...

  8. typeof(), __typeof(), __typeof__(), -isKindOfClass:的区别

    关于  typeof()和 __typeof()  和 __typeof__() ,Stack Overflow 有一段解释,大概意思是, __typeof() .__typeof__() 是C语言的 ...

  9. 关于ionic2 更新到ionic3 后组件不能用的解决方案

    错误代码就不贴出来了,直接上代码吧! 首先在xx.module.ts添加 1.import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; 2.添加 ...

  10. ldap,openldap-docker,

    ldap basic and usage in devops: https://blog.csdn.net/weixin_42578481/article/details/80863890 maybe ...