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. Hibernate常见面试题(转)

    在Java J2EE方面进行面试时,常被问起的Hibernate面试问题,大多都是针对基于Web的企业级应用开发者的角色的.Hibernate框架在Java界的成功和高度的可接受性使得它成为了Java ...

  2. D - Replace To Make Regular Bracket Sequence

    You are given string s consists of opening and closing brackets of four kinds <>, {}, [], (). ...

  3. shell 脚本部分变量含义

    $ # 传递到脚本的参数个数$ * 以一个单字符串显示所有向脚本传递的参数.与位置变量不同,此选项参数可超过9个$ $ 脚本运行的当前进程I D号$ ! 后台运行的最后一个进程的进程I D号$ @ 与 ...

  4. redis集群,主从,持久化

    1,单机版 先安装gcc   yum install gcc-c++ 然后解压源码包,执行编译命令make(C语言写的,需要gcc环境),最后安装Redis,需要通过PREFIX指定安装路径make ...

  5. 1.7Oob同类中不同方法间的互相调用

    import java.util.Scanner; public class Bill { public static final double RATE=150.0; 这里没有创建getter和se ...

  6. angular4 辅助路由

    1.辅助路由 2. 创建chat组件 ng g component chat 3. 组件html css: 1 2 3 4 5 6 7 .chat{   background:green;   hei ...

  7. CALayer的子类之CAShapeLayer

    一,CAShapeLayer介绍 * CAShapeLayer继承自CALayer,属于QuartzCore框架,可使用CALayer的所有属性.   CAShapeLayer是在坐标系内绘制贝塞尔曲 ...

  8. iOS中的静态库与动态库,区别、制作和使用

    如果我们有些功能要给别人用,但是又不想公开代码实现,比如高德地图.第三方登录分享等等,这时候我们就要打包成库了.库分静态库和动态库两种: 静态库:以.a 和 .framework为文件后缀名.动态库: ...

  9. [administrator][driver] driverctl 是如何在udev上层管理设备驱动的

    https://gitlab.com/driverctl/driverctl driverctl 处于 kernel 与 udev做设备与驱动管理的上层. 理解什么叫override是本文的核心内容. ...

  10. Flink – submitJob

    Jobmanager的submitJob逻辑, /** * Submits a job to the job manager. The job is registered at the library ...