0 0

SQL语句------统计报表涉及三张表 3

表a(汇率表)      主键    币种ID      日期       时间    当前汇率
                id    currid     a_date   a_time   value

表b(币种表)      主键     币种缩写    中文名称
                  currid   currEN    currCN

表c(交易表)      主键    设备编号    兑入币种(英文缩写)  兑入金额    兑出人民币金额     日期      时间
                pid     code      currencyIN      amountIN     amountOUT     c_date  c_time




要求虚拟表结构如下(result_Tbale):
          根据日期,设备编号,币种分组

                日期      设备编号   交易比数      交易币种       兑入金额总计   兑出金额总计   交易汇率
                  c_date    code      count     currencyIN      sumIN       sumOUT      rate
              
             result_Tbale表中 交易汇率 需要根据日期和币种查询表a ,(取 <= c_date日期中的最新的汇率 )


嵌套的SQL语句只知道有限的关键字,绞尽脑汁也想不出这条SQL语句如何写,帮忙看下了,先谢谢了
 

问题补充:
Anddy 写道
结果表有条件吧



刚出去了下,不好意思!

结果表条件: 按时间区间
            where c_date >= XXXXXX and c_date<=XXXXXX
2010年5月15日 14:30

2个答案 按时间排序 按投票排序

0 0


写的有点多,觉得“授人以鱼,不如授人以渔”。呵呵,见谅了。


首先,对于这类的分组统计语句,第一点,要弄清楚的是:

用什么分组?

和我上次对你的回答一样。

确定以什么分组,决定了 你可以取出的字段,因为取出的字段必须可以使用SUM等聚合(统计)函数的。

参见你的上一个问题理解下。呵呵,可以看出你已经理解大部分


http://www.iteye.com/problems/42272


引用
根据日期,设备编号,币种分组


这是你的分组依据。然后在你的要取出的字段,除了用于分组的字段,其他字段都得使用聚合(统计)函数

可以这样写出来:


SELECT  日期,设备编号,SUM(交易比数) AS 总交易比数,交易币种,SUM(兑入金额) AS 兑入金额总计,SUM(兑出金额) AS 兑出金额总计, AVG(交易汇率) AS 交易汇率


你有2个不清楚的地方:

1、重复使用了"交易比数",这里改为了“总交易比数”

2、对于交易汇率,虽然和时间是一对一的,但是时间不是分组依据,为了安全起见,加了个统计函数。



剩下的就是联表和条件约束了,根据要选择的字段写连接条件。

对照字段主要在“交易表”中,只有2个字段“兑入币种”、“交易汇率”不在其中,那就用连表


FROM  

汇率表,币种表,交易表   

WHERE 

交易表.日期 = 汇率表.日期  AND 交易表.时间 = 汇率表.时间  AND

交易表.兑入币种 = 币种表.主键 AND

交易表.日期 BETWEEN XXXXXX AND  XXXXXX 



在这个里面,你的交易表中的 “兑入币种(英文缩写)”  没有描述约束,这里猜测为 是引用币种表的主键


分组依据:

GROUP  交易表.日期 , 交易表.设备编号 , 交易表.兑入币种 



集合在一起就是:

SELECT  

日期,设备编号,SUM(交易比数)AS 总交易比数,

交易币种,SUM(兑入金额) AS 兑入金额总计,SUM(兑出金额) AS 兑出金额总计,

AVG(交易汇率) AS 交易汇率


FROM  

汇率表,币种表,交易表   

WHERE 

交易表.日期 = 汇率表.日期  AND 交易表.时间 = 汇率表.时间  AND

交易表.兑入币种 = 币种表.主键 AND

交易表.日期 >= XXXXXX AND 交易表.日期<=XXXXXX 


GROUP  交易表.日期 , 交易表.设备编号 , 交易表.兑入币种 



试试吧,分析了一大通,不知道可以行不。如果有问题,很可能 币种分组的问题

2010年5月15日 20:26
0 0

结果表有条件吧

2010年5月15日 14:44

相关推荐

    生成禅道系统任务报表(SQL)

    包含的字段为: v.id 任务编号, d.`name` 部门名称, CONCAT(v.assignedTo,'(',u.realname,')')登记人, v.pname 项目, v.tname 任务名称, v.estimate 预计工时, v.consumed 已完成工时, v.`left` 剩余工时, ...

    核电建造系统SQL操作语句

    为了统计核电建造过程中所有材料的使用量,可以使用以下SQL语句: ```sql SELECT area, docid, lrcm, mat_type, spec, grade, SUM(dimen_1 * dimen_2 * pre_qty / 1000000) yongliang FROM ( SELECT e.area, e....

    SQL语法大全

    rs.open SQL语句,conn,3,2 3. SQL常用命令使用方法: (1) 数据记录筛选: sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]" sql="select * from 数据表 where 字段名 like \'%字段值%\'...

    sql SERVER 20008

    动态SQL是指在运行时构建并执行的SQL语句。它允许用户在不知道确切的SQL命令的情况下生成和执行SQL命令。这种方式对于处理未知数量或类型的列非常有用。例如,在本例中,动态SQL用于构建一个包含多个列(由`buildNo`...

    SQL结构化查询语言在图书馆业务报表中的应用.pdf

    在这种情况下,使用SQL查询语句可以灵活地根据多张表之间相关联的信息进行查询,从而生成满足特定需求的报表。通过构造适当的查询语句,可以将流通借还表、书目表、读者表等多个表的数据结合起来,生成所需的催还...

    仓库管理系统 java+sql server

    1. **JDBC驱动**:Java应用程序通过Java Database Connectivity (JDBC) API与SQL Server建立连接,执行SQL语句。 2. **预编译语句与批处理**:预编译语句能提高查询性能,批处理则可以一次性执行多个SQL命令,减少...

    Java SSM工资管理系统【优质毕业设计、课程设计项目分享】

    - 报表统计:生成工资报表,便于管理者查看整体薪资状况。 通过参与Java SSM工资管理系统的开发,开发者能够掌握企业级应用开发流程,理解并熟练运用Spring、Spring MVC和MyBatis框架,以及数据库设计和前端开发...

    vb sql学生管理系统

    使用SQL语句(如SELECT、INSERT、UPDATE、DELETE)可以实现数据的增删改查操作。 该系统的关键模块可能包括: 1. **登录模块**:验证管理员身份,确保数据安全。 2. **学生信息管理模块**:添加、修改和删除学生...

    C#+sql学籍管理系统

    在本系统中,SQL Server 2000创建了包含学生基本信息、成绩、课程等多张表的数据库结构,通过SQL语句实现数据的增删改查。C#.NET使用ADO.NET组件与SQL Server通信,实现数据的实时更新和查询。 学籍管理系统的功能...

    Hive - A Warehousing Solution Over a Map-Reduce.pdf

    目前,在Facebook内部,Hive仓库已包含了数千张表,总数据量超过700TB,并被超过100名用户广泛用于报表制作和即席分析等多种场景。 #### 二、Hive 数据模型与HiveQL **2.1 数据模型** 在Hive中,数据组织结构主要...

    sqlserver数据3表.最典型案例  与前面的C#后端ZXm模板连用

    5. **报表与分析**:SQL Server自带的Reporting Services提供了一种强大的报表生成工具,可以基于这三张表创建各种报表,如统计每个学校的班级数量、每个班级的学生人数等,为企业决策提供数据支持。 总结来说,...

    VB与ACCESS实现高校固定资产管理系统

    - **报表和统计**:可能需要生成固定资产的统计报表,如按类别统计资产数量、按年份统计购置成本等,这涉及到VB的报表控件和复杂的SQL聚合函数(如COUNT、SUM等)。 4. **系统安全与优化**: - **权限管理**:...

    图书馆里系统 vb sql

    此外,SQL语句用于插入、更新、删除数据,以及查询操作。 3. **连接数据库**:VB通过ADO(ActiveX Data Objects)或ODBC(Open Database Connectivity)与SQL数据库建立连接,实现数据的读取、写入和更新。需要编写...

    2021-2022计算机二级等级考试试题及答案No.13135.docx

    - **详解**: 在Access中,查询是基于表的数据视图,报表用于呈现数据,可以使用表向导和设计器创建表,也可以使用SQL语句创建和修改表结构。 - **应用场景**: 数据库设计与管理。 ### 21. C语言函数实现 - **知识点...

    自学联系的一些表打包为sql文件

    7. **存储过程**:存储过程(STORED PROCEDURE)是一组预编译的SQL语句,可以接受参数,返回结果,提高代码复用和执行效率。 8. **事务处理**:SQL支持事务(TRANSACTION),确保数据的一致性和完整性。BEGIN、...

    学生宿舍管理系统VB+SQL

    系统可能使用如Microsoft SQL Server或SQLite等数据库管理系统,创建包含学生信息、宿舍信息、费用信息等多张表,并通过SQL语句进行数据操作。例如,可以通过INSERT语句添加新的入住记录,通过SELECT语句查询学生...

    通过格式良好的SQL提高效率和准确性

    格式良好的SQL并不会比乱七八糟的SQL运行效果更好。数据库其实不怎么关心SQL语句中你把逗号放到了字段名的前面还是后面。...下面是一个典型的SQL应用场景,业务报表的数据来自三张表,客户表、销售表和地域表。

    SQL高手速成

    2. 存储过程:预编译的SQL语句集合,可重复使用,提高效率并简化复杂的操作。 六、索引与优化 1. 索引类型:B树索引、哈希索引和全文索引等,了解它们的作用和适用场景。 2. 查询优化:如何通过创建和使用索引来...

    一个简单的SQL 行列转换语句

    首先,我们来看一下涉及的三张表: 1. **Department** 表存储部门信息,包括部门ID(Id)和部门名称(Department)。 2. **Employee** 表记录员工信息,包含员工ID(EmployeeId)、所属部门ID(DepartmentId)和...

    Oracle8i_9i数据库基础.doc

    而SQL*PLUS是Oracle提供的一种前端工具,用于执行SQL语句,支持更多交互式功能。 - **PL/SQL语言**:一种过程化SQL扩展语言,结合了SQL的强大力量和高级程序设计语言的特性,允许在数据库内部编写复杂的业务逻辑。 ...

Global site tag (gtag.js) - Google Analytics