`
113.com
  • 浏览: 81191 次
  • 来自: 广州
社区版块
存档分类
最新评论

表根据对应字段生成其它三个字段

 
阅读更多

根据一张表的两个时间的字段,根据对应字段生成其它三个字段,通过表的自联接可以做得到,但是会出现些意想不到的问题,最终解决的办法---通过存储过程。

 

数据库表
CREATE TABLE `box_mobile_log_active_` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `boxId` int(11) NOT NULL,
  `channelId` int(11) NOT NULL,
  `fatherChannelId` int(11) NOT NULL,
  `appId` int(11) NOT NULL,
  `cpId` int(11) NOT NULL,
  `active_day` datetime NOT NULL,
  `createTime` datetime DEFAULT NULL,
  `active_num` int(11) NOT NULL,
  `theDay` int(11) DEFAULT '0',
  `secondDay` int(11) DEFAULT '0',
  `thirdDay` int(11) DEFAULT '0',
  `active_num_rate` decimal(10,4) NOT NULL DEFAULT '0.0000',
  `province` varchar(80) NOT NULL,
  `city` varchar(80) NOT NULL,
  `updateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=113234 DEFAULT CHARSET=utf8;

 

存储过程 :

use box_oms;
CREATE  PROCEDURE `sp_box_mobile_active_log_test`(IN v_day int)
BEGIN
	 DECLARE v_done1 INT DEFAULT 0;
	 DECLARE  v_theDay,v_secondDay,v_thirdDay,v_active_num,v_active_num_rate  INT DEFAULT 0;
   DECLARE  v_boxId,v_channelId,v_fatherChannelId,v_appId,v_cpId INT;
   DECLARE  v_createTime,v_active_day varchar(10);
   DECLARE  v_province,v_city varchar(20);

	 DECLARE v_activeList CURSOR FOR SELECT a.boxId boxId,c.id channelId,c.fatherId fatherChannelId,a.appId appId,d.cpId cpId,DATE(a.installTime),DATE(a.updateTime) active_day,COUNT(a.id) active_num,COUNT(a.id) active_num,a.province province,a.city city 
   FROM box_mobile_log_sum a,box_market.channel_box b,box_market.channel_box_chinfo c,box_market.res_app d 
   WHERE a.appId = d.id AND a.boxId = b.boxId AND b.channelId=c.id  GROUP BY DATE(a.installTime),DATE(a.updateTime),a.boxId,a.appId;
	  DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_done1 = 1;
		
		
		  INSERT IGNORE INTO box_mobile_log_sum SELECT * FROM box_log.box_mobile_log a where a.updateTime>DATE_SUB(CURDATE(),INTERVAL v_day DAY) AND a.updateTime<=DATE_SUB(CURDATE(),INTERVAL -1 DAY);
      CALL sp_filter(2);
		-- CALL sp_rehab_mobile_active_installday;
		-- 生成激活统计表
	TRUNCATE TABLE box_mobile_log_active_; 
   OPEN v_activeList;
	 REPEAT
			FETCH v_activeList INTO v_boxId,v_channelId,v_fatherChannelId,v_appId,v_cpId,v_createTime,v_active_day,v_active_num,v_active_num_rate,v_province,v_city;
	 IF v_done1 != 1 THEN
     IF to_days(v_createTime)=to_days(v_active_day) THEN
      SET v_theDay=v_active_num;
     ELSEIF (to_days(v_createTime)+1)=to_days(v_active_day) THEN
      SET v_secondDay=v_active_num;
     ELSEIF (to_days(v_createTime)+2)=to_days(v_active_day) THEN
      SET v_thirdDay=v_active_num;
    END IF;
    INSERT INTO box_mobile_log_active_ (boxId,channelId,fatherChannelId,appId,cpId,createTime,active_day,active_num,active_num_rate,province,city,theDay,secondDay,thirdDay)
     VALUES(v_boxId,v_channelId,v_fatherChannelId,v_appId,v_cpId,v_createTime,v_active_day,v_active_num,v_active_num_rate,v_province,v_city,v_theDay,v_secondDay,v_thirdDay);       
     SET v_theDay=0;
     SET v_secondDay=0;
     SET v_thirdDay=0;
   END IF;
	 UNTIL v_done1 = 1	END REPEAT;
	 CLOSE v_activeList;	
	 COMMIT;	
END

 

分享到:
评论

相关推荐

    由特定数据库表格式(3个字段)生成TreeView树型

    本项目似乎涉及到一个使用Delphi编程语言开发的应用,其目标是根据特定的数据库表(包含3个字段)生成一个TreeView控件,以展示层级关系。以下是关于这个主题的详细知识: 1. **TreeView控件**:TreeView控件在...

    SQL SERVE根据值查找所在的表和字段

    假设我们有一个复杂的数据库环境,其中包含多个表,并且每个表中有多个字段。现在我们需要找到一个特定值(例如:'610012')出现在哪些表中的哪些字段里。这个问题可以通过编写动态SQL来解决。 #### 二、技术原理 ...

    随机拖动字段生成数据分析报表

    标题 "随机拖动字段生成数据分析报表" 描述了该功能的主要特点,即随机拖动字段块到三个模块区域中,并生成对应的数据分析报表。 标签 "vue3 前端" 表明该资源使用了 Vue 3 框架作为前端开发框架。 在部分内容中,...

    数据库字段自动生成拼音Delphi源码

    标题“数据库字段自动生成拼音Delphi源码”指的是一个Delphi编程项目,其核心功能是为数据库中的字段生成对应的拼音简码或全拼码。在处理中文数据时,这种功能非常实用,尤其在构建搜索、索引或者进行中文数据处理的...

    ORACLE生成所有表对应的序列

    在Oracle数据库中,序列(Sequences)是一种自动递增或递减的数字生成器,常用于为表的主键字段生成唯一的标识符。在大型数据库系统中,它们是管理序列化和唯一性的重要工具。本篇文章将深入探讨如何在Oracle中生成...

    sql server数据库表生成实体类生成工具

    开发者只需通过工具连接到数据库,选择相应的表,工具就能根据表结构自动生成对应的实体类代码,包括属性(对应字段)、构造函数、属性访问器(Get和Set方法)等。 C#是.NET框架的主要编程语言,它支持面向对象编程...

    eclipse增加getset方法根据字段注释自动生成中文注释功能.docx

    2. 使用Eclipse的代码生成功能为这些字段生成Getter/Setter方法。 3. 检查生成的方法是否带有正确的中文注释。 #### 六、注意事项 - 在进行此类修改时,务必确保备份相关文件,以免造成不可恢复的损失。 - 修改后的...

    java根据数据库自动生成vo 类

    这些工具通常需要用户指定数据库连接信息、表名,然后它们会根据表结构生成VO类。 在生成VO类的过程中,需要注意以下几点: - 数据类型转换:数据库中的数据类型需要转换为Java类型,例如,数据库中的`INT`对应...

    通过groovy自定义函数实现提取明细表字段至主表字段.rar

    本案例聚焦于使用Groovy脚本语言来实现一个特定的功能:从明细表中提取字段值,并将其更新到主表对应的字段中。这样的操作对于数据同步、报表生成以及业务流程自动化等场景非常常见。 Groovy是一种动态、灵活的Java...

    SAP 标准报表增加字段的方法介绍

    - **示例场景**:假设我们要在VA05这个标准报表中增加“欠交货数量”、“客户物料”等字段。 - **操作步骤**: - 打开VA05报表。 - 在报表显示的字段列表中,找到需要添加字段的位置。 - 按下F1键,弹出的帮助...

    从UML类图到关系数据库表的代码生成方法

    表中的每一行称为一个记录,每列称为一个字段。关系数据库设计包括确定表结构、字段属性和表间关系等。 1. 表(Table):存储数据的基本单位,每个表有唯一的表名。 2. 字段(Field):表的列,表示数据项的名称和...

    数据库结构文档生成器

    1. **SQL查询目的**:本查询旨在从数据库系统表中提取表结构的相关信息,包括字段名称、类型、长度、是否为主键等属性,并根据这些信息生成文档。 2. **查询字段解析** - `=CaseWhenA.colorder=1ThenD.nameElse''...

    SqlToJavaBean_javabean_根据表结构生成javabean_生成javabean_

    例如,如果数据库中有一个名为"users"的表,包含"id"(int类型)、"username"(varchar类型)和"email"(varchar类型)三个字段,那么生成的JavaBean可能如下: ```java public class User { private int id; ...

    VS代码自动生成器,可连接数据库根据数据库表生成相关页面及后台。

    总而言之,VS代码自动生成器是一个强大的工具,它能够根据数据库表结构快速生成三层架构的前端页面和后端服务代码。它通过使用存储过程和枚举来提高代码的效率和可读性,从而大幅提升开发效率并确保代码质量。在实际...

    ArcGIS10 数据按字段分层导出

    例如,如果我们有一个包含城市人口数据的图层,我们可以按人口数量字段将城市分为高、中、低三个人口密度等级,并分别导出这三个等级的城市数据。 在ArcGIS 10中,可以使用“toolbox工具箱”来实现这个功能。...

    CodeSmith SQLServer 生成C#三层代码

    数据表的名字中如果存在“_”或空格,会自动清除,每一字段生成一个对应的属性,同样会去除“_”和空格,表中的外键字段除生成一个对应属性外,还会生成一个外键实体属性,如class_id,除生成ClassId属性外,还生成...

    .net 实体类生成器

    只需提供数据库连接信息,生成器就会根据表结构创建对应的C#类,每个类包含与表字段相对应的属性,以及可能的验证规则和关系映射。 三层架构,也称为N层架构,是软件设计中常用的一种模式,包括表示层(UI)、业务...

    java 根据简单对象自动 生成excel

    然后,我们可以编写一个方法,根据这些字段生成Excel工作表: ```java public void generateExcel(List&lt;User&gt; users) { // 创建Excel工作簿和工作表 Workbook workbook = new XSSFWorkbook(); // 使用Apache POI...

    根据word文档生成SQL语句(SQLServer) 及 实体类

    在这个例子中,我们定义了一个名为Customers的表,包含三个字段:CustomerID(主键)、FirstName(非空)和LastName,以及Email(唯一)。 至于“实体类”,这是面向对象编程中的一个重要概念,尤其是在使用ORM...

    用友U8数据库对照表(8.5)

    这个数据库对照表提供了数据库中的各个字段的中文解释,帮助用户更好地理解和处理与数据库相关的问题。 1. **用友U8系统简介** 用友U8是一款由用友网络科技股份有限公司开发的企业资源规划(ERP)软件,广泛应用于...

Global site tag (gtag.js) - Google Analytics