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

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

 
阅读更多

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

 

数据库表
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. 检查生成的方法是否带有正确的中文注释。 #### 六、注意事项 - 在进行此类修改时,务必确保备份相关文件,以免造成不可恢复的损失。 - 修改后的...

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

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

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

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

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

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

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

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

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

    “代码modle部分枚举相关表内容”意味着在生成的Model层代码中,会根据数据库中的每个表自动创建对应的类,并将表的字段映射为类的属性。枚举可能是为了表示特定的数据类型,例如状态、类别等,这样可以使代码更加...

    数据库结构文档生成器

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

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

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

    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