`
月亮不懂夜的黑
  • 浏览: 155434 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

左联接数据不统一问题

阅读更多

在使用左联接时,遇到问题:

1、使用tab1,左联接tab2;

2、tab1有4条数据,tab2中对应tab1的4条数据 有>4条数据与之对应;

3、简单使用左联接之后,会出现,数据总数是后面的tab2与之对应的条数。而不是tab1的总数。解决方案

select * from tab1 left join
(
  select *  from 
  (
     select a.*,row_number() over(partition by b3 order by b1) r 
     from tab2 a
  )
  where r = 1
) tab12 on a1=b3 

其中a1,b3是两表的连接条件中的字段

 以上感谢csdn的 Robin_Ares

 

后附上处理统计的相关sql,针对oracle,备忘

为了实现,如下报表功能:



 使用sql 如下:

SELECT QYJG,JGMC,SUM(MONEY4) JYZE,SUM(COUNT4) CXZS,SUM(COUNT1) DJFZS,SUM(MONEY1) DJFJE,SUM(COUNT2) ZZZS,SUM(MONEY2) ZZJE,SUM(COUNT3) DKHKZS,SUM(MONEY3) DKHKJE
FROM (
 SELECT QYJG,JGMC,DECODE(JYDM,'7502', 1, 0 ) as COUNT1,
        DECODE(DECODE(JYDM,'7502', JYJE, 0.00 ),0,'0.00', trim(to_char(DECODE(JYDM,'7502', JYJE, 0.00 ),'99999999999999.99'))) as MONEY1,
        DECODE(JYDM,'1011', 1,'1012',1, 0 ) as COUNT2,
        DECODE(DECODE(JYDM,'1011', JYJE,'1012',JYJE, 0.00 ),0,'0.00', trim(to_char(DECODE(JYDM,'1011', JYJE,'1012',JYJE, 0.00 ),'99999999999999.99'))) as MONEY2,
        DECODE(JYDM,'1100', 1, 0 ) as COUNT3,
        DECODE(DECODE(JYDM,'1100', JYJE, 0.00 ),0,'0.00', trim(to_char(DECODE(JYDM,'1100', JYJE, 0.00 ),'99999999999999.99'))) as MONEY3,
        DECODE(JYDM,'1011', 0,'1012',0,'7502',0,'1100',0, 1 ) as COUNT4,
        DECODE(DECODE(JYDM,'1011', JYJE,'1012',JYJE,'7502',JYJE,'1100',JYJE, 0.00 ),0,'0.00', trim(to_char(DECODE(JYDM,'1011', JYJE,'1012',JYJE,'7502',JYJE,'1100',JYJE, 0.00 ),'99999999999999.99'))) as MONEY4
         FROM
     (
    SELECT BT.ZHDH ZHDH ,BT.JYJE JYJE,BT.JYDM ,( select displayvalue from SYSENUMITEM t where t.enumid =
      ( select enumid from  SYSENUM ss where ss.fieldname='BRANCHNO' and ss.tablename = 'PUBLIC' ) and CS.QYJG =  T.FIELDVALUE AND T.FIELDVALUE LIKE '%' ) JGMC, QYJG FROM (SELECT * FROM B_TRANS_LOG WHERE JYRQ >= $P{t_bgnDate} AND JYRQ<= $P{t_endDate}  AND JYJE >0 AND ZJJYZT= $P{t_transResult} ) BT left join
     (
       select * from
       (
        select a.*, row_number() over(partition by a.ZH order by a.ID ) r
       from DEMO a
      ) where r = 1
 ) CS ON BT.ZHDH = CS.ZH
)
) GROUP BY QYJG

 

  • 大小: 60.4 KB
0
0
分享到:
评论
4 楼 月亮不懂夜的黑 2014-04-17  
terry813 写道
其实还有另外一种SQL写法

求指教
3 楼 terry813 2014-04-17  
其实还有另外一种SQL写法
2 楼 月亮不懂夜的黑 2014-04-16  
hamber 写道
oracle可以使用开窗函数、但是mysql呢?该如何处理的?

其他的sqlserver,mysql可以使用 类似于:
select
substr(mh.FMsgTime,0,10) as FMsgTime,
sum(case when mh.FState='1' or FState='4' or FState='5' then 1 else 0 end) as allcount,
sum(case when mh.FState='7' then 1 else 0 end) sum8,
sum(case when mh.FState='0' or FState='2' then 1 else 0 end) sum0,
sum(case when mh.FState='1' then 1 else 0 end) sum1,

条件判断来实现
1 楼 hamber 2014-04-16  
oracle可以使用开窗函数、但是mysql呢?该如何处理的?

相关推荐

    thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例

    本文实例讲述了thinkPHP5框架实现多数据库连接,跨数据连接查询操作。分享给大家供大家参考,具体如下: 1. 多数据库连接 方法1:在需要连接其他数据库的地方,使用Db::connect()方法动态连接数据库,方法参数为...

    SQL左联右联的通俗解释

    ### SQL左联右联的通俗解释 在数据库操作中,联接(Join)是一种非常重要的技术,用于将多个表中的数据结合在一起。联接可以分为几种类型:内联接(INNER JOIN)、左联接(LEFT JOIN)、右联接(RIGHT JOIN)等。...

    axure rp9.0 左联菜单功能框架

    使用时,只要将现有的功能名称,菜单名称维护到中继器的数据集,即可实现。新建功能时,保持功能在菜单模块下,且功能名称与中继器中维护的功能名称一致,即可实现菜单与功能的关联,实现功能的动态切换。

    oracle sql左联右联 平时 (学习记下来的)

    这个查询的主要目的是获取来自`breedarea`表的数据,并通过`bacity`和`batown`字段分别与两个`countiesCitiesCode`表中的`cccode`字段进行匹配,以获取对应的城市名和城镇名。 #### 4. 连接条件的分析 - 第一个左...

    MySQL左联多表查询where条件写法示例

    在MySQL数据库中,多表查询是处理复杂数据关系的关键操作,尤其在数据分析和报表生成时。左连接(Left Join)是一种特殊的连接类型,它返回所有左表(即第一个被引用的表)的记录,以及与右表(第二个被引用的表)...

    Oracle左连接返回多条记录中一条记录的查询语句

    Oracle左连接返回多条记录中一条记录的查询语句,更具指定条件分组排序,返回各组中第一条记录

    Tableau Desktop 入门

    在创建连接后,Tableau会自动创建默认的联接,用户也可以自定义联接子句,比如选择左联接来获取“订单”表的所有信息,同时引入“退回”交易的相关信息。此外,Tableau提供实时连接和数据提取两种方式,实时连接适用...

    axure rp9.0 左联菜单 功能框架

    在这个“左联菜单功能框架”中,我们主要关注的是如何利用Axure RP来设计一个具有左侧菜单栏的用户界面。 首先,界面描述中提到的“左侧菜单功能区”是大多数Web应用程序和桌面应用的标准布局之一。这个区域通常...

    初中语文文学讨论现当代文学鲁迅与左联

    初中语文文学讨论现当代文学鲁迅与左联

    VB中利用SQL语句实现高效数据处理.pdf

    连接字符串中可以选择不同的提供者,包括 Jet 引擎和 ODBC,Jet 引擎可以不需要手工添加数据源,而 ODBC 需要手工添加数据源。 执行 SQL 语句可以使用 oCn 对象的 Execute 方法,例如: oCn.Execute "select * from...

    在水晶报表中使用SQL数据库

    水晶报表是一款强大的报告生成工具,尤其适用于企业级的数据可视化...无论是在数据分析、决策支持还是日常管理中,都是企业不可或缺的工具。通过深入学习和实践,你可以充分利用这一强大的组合,提升你的业务分析能力。

    inner join 内联与left join 左联的实例代码

    本篇文章将深入探讨两种常见的JOIN类型:INNER JOIN(内联)和LEFT JOIN(左联),并结合实例代码来解析它们的工作原理和用法。 INNER JOIN,也称为内连接,返回的是两个表中满足特定条件的匹配行。换句话说,只有...

    LINQ入门及应用 3/13

    本书介绍微软最前沿的数据查询编程技术,内容由160个知识点实例加5个综合应用案例组成,光盘中提供了涉及到的全部示例源程序项目,对于将要从事正规商业开发的人员有很强的示范性和指导作用。 内容提要 -----------...

    Oracle 左连接(+)加号用法及常用语法之间的关系

    这两种写法都是无效的,因为WHERE子句中的条件与ON子句中的条件重复,这在LEFT JOIN中会导致错误的结果,而在INNER JOIN中则与不带WHERE的写法等效。 6. 关于INNER JOIN的提示: 对于INNER JOIN,无论是在ON子句...

    sql 外联、内联简单的例子

    FROM子句关键字 相应的结果集 CROSS JOIN 笛卡尔乘积(所有可能的行对) INNER JOIN 仅对满足连接条件的CROSS中的列 LEFT OUTER JOIN 一个表满足条件的行,和另一个表的所有行 RIGHT OUTER JOIN 与LEFT相同,但两个...

    Laravel开发-eloquent-joins

    - `leftJoin()`、`rightJoin()`和`outerJoin()`:除了基本的`join`,还有左联接、右联接和外联接,分别用于处理不同类型的联接需求。 2. **基于关系的JOIN**: - `with()`方法:当你需要预加载关联数据时,可以...

    用友软件面试题精选

    ### 用友软件面试题精选知识点详解 #### 1. Hashtable与HashMap的区别 - **类继承差异**:`...SQL Server与Oracle在左联接语法上有细微差别;而JSP页面间的数据传递方式多样,可以根据实际需求选择最适合的方法。

    sqljoin示例

    sqljoin示例,包含左联右联内联以及外联等连接方式是学习SQL必不可少的知识

    python简介教程

    Python中的pandas库是数据处理和分析的核心工具,尤其适合于结构化数据的管理。本教程将简要介绍pandas的一些关键特性和操作,帮助初学者快速掌握其基本用法。 1. **创建对象** - **Series**:通过传递list创建...

Global site tag (gtag.js) - Google Analytics