精华内容
下载资源
问答
  • 们之间没有任何关系 所以想要连接它们需要使用rownum 利用完全外连接和rownum相等 使A B表以字段的形式(而不是以行的形式)连接在一起这样的话就可以实现将不同表中的数据以的形式合并在一起(之

    --问题:查询部门的平均工资 岗位的平均工资 每个部门的每个岗位的平均工资

    且将其在一个查询中展示

     

    思路:首先分别查出这三张表 假设为A B C 然后利用两两结合 先将A B结合由于它

    们之间没有任何关系 所以想要连接它们需要使用rownum 利用完全外连接和rownum相等 使A B表以字段的形式(而不是以行的形式)连接在一起这样的话就可以实现将不同表中的数据以列的形式合并在一起(之所以这么 麻烦是因为union union all minus intersect是以行的形式将多个查询结果合并在一起的 想要实现以列的形式将多个查询结果合并在一起的话就需要借助rownum和(完全)外连接来实现) 解决这个问题的核心就是rownum和完全外连接

        具体代码:

        select e3.部门平均工资, e3.岗位平均工资, e44.部门岗位平均工资 from         

                (select e11.部门平均工资, e22.岗位平均工资, rownum rn from

                    (select e1.部门平均工资, rownum rn from

                        (select avg(sal) 部门平均工资 from

                            emp group bydeptno)e1)e11

                    full join

                    (select e2.岗位平均工资, rownum rn from

                        (select avg(sal) 岗位平均工资 from

                             emp group by job)e2)e22

                    on e11.rn = e22.rn)e3

                full join

                (select e4.*, rownum rn from

                    (select avg(sal) 部门岗位平均工资 from

                        emp group by deptno,job)e4)e44

                on e3.rn = e44.rn;

    展开全文
  • 背景今日接到一个需求,需要统计AB两个库中表的数据然后合并一起。需要查询的两个库的结构一致,所以同事只给了其中一个库的查询语句,剩下的查询整理需要自己写。首先看一下原始的数据原始取数语句SELECT ...

    一.背景

    今日接到一个需求,需要统计AB两个库中表的数据然后合并到一起。

    需要查询的两个库的结构一致,所以同事只给了其中一个库的查询语句,剩下的查询整理需要自己写。

    首先看一下原始的数据

    原始取数语句

    SELECT distinct ( ltrim(rtrim(a.charge_code))+‘,‘+ltrim(rtrim(a.serial))+‘,‘+ltrim(rtrim(a.group_no))) ASdrugMainKey,

    a.drugnameASdrugCommName,

    (case when isnull(y.drugname,‘‘)=‘‘ then a.drugname else y.drugname end) ASdrugName,

    a.specificationASdrugspecs,

    b.unitASdrugUnit,

    e.dosanameASdrugFrom,

    c.manu_nameASfactoryName ,

    a.charge_codeAScharge_code,

    a.serialASpackSeqNo,

    a.group_noaspharmacyCode,

    z.ybbmFROMyp_mz_base aLEFT JOIN yp_base f ON a.charge_code =f.charge_codeLEFT JOIN dbo.yp_unit b ON a.mini_unit =b.codeLEFT JOIN dbo.yp_manufacture c ON f.manufactory =c.manu_codeLEFT JOIN dbo.yp_dosage e ON f.dosage =e.dosacodeLEFT JOIN dbo.yp_drugname y ON a.drug_id_link = y.drug_id and y.flag =‘b‘

    LEFT JOIN dbo.zd_ybdzyp z on a.charge_code=z.charge_code and a.serial=z.serial

    5f860f801b7478246f03fb79124bd666.png

    (A库和B库查出来的数据结构一致,就不重复贴图了)

    二.要求

    ①.对于A库查到的数据的字段drugmainkey的值末尾加‘1‘结尾,对于B库查到的数据的字段drugMainKey的值末尾加‘2’结尾,并且和原数据之间用‘,’分隔,将处理后的数据放在一起。

    ②.对于drugMainKey相同的行进行合并,合并后的drugname为各行的drugname的合集,用‘,’连接在一起。(因为除了drugname以外的其他字段值都是相同的,所以不需要做操作)

    处理后的数据的效果图为:

    a5cf5d7e1e932d9e32df9bc75a40fb18.png

    这个问题可以用游标来操作,也可以用笨方法采取两步走的笨方法处理数据。

    这里我用的是笨方法。

    2.1.1先建立表一,用来存放①中的数据。

    表一:

    746d4a20f9faf9206666a865d7402114.png

    2.1.2 实现①的要求

    这个没什么好说的,涉及到两个表用union all,以及字符串的拼接。

    SELECT distinct ( ltrim(rtrim(a.charge_code))+‘,‘+ltrim(rtrim(a.serial))+‘,‘+ltrim(rtrim(a.group_no))+‘,‘+‘1‘) ASdrugMainKey,

    a.drugnameASdrugCommName,

    (case when isnull(y.drugname,‘‘)=‘‘ then a.drugname else y.drugname end) ASdrugName,

    a.specificationASdrugspecs,ltrim(rtrim(b.unit)) ASdrugUnit,

    e.dosanameASdrugFrom,

    c.manu_nameASfactoryName ,

    a.charge_codeAScharge_code,

    a.serialASpackSeqNo,

    a.group_noaspharmacyCode,

    z.ybbm,

    a.pack_sizeAS packSize, /*新增1*/

    ltrim(rtrim(p.unit))AS drugUnit2 /*新增2*/

    /*p.unit AS drugUnit2 新增2*/

    FROMsdyychisdb_sz.dbo.yp_mz_base aLEFT JOIN sdyychisdb_sz.dbo.yp_base f ON a.charge_code =f.charge_codeLEFT JOIN sdyychisdb_sz.dbo.yp_unit b ON a.mini_unit =b.codeLEFT JOIN sdyychisdb_sz.dbo.yp_unit p ON a.pack_unit = p.code /*新增3*/

    LEFT JOIN sdyychisdb_sz.dbo.yp_manufacture c ON f.manufactory =c.manu_codeLEFT JOIN sdyychisdb_sz.dbo.yp_dosage e ON f.dosage =e.dosacodeLEFT JOIN sdyychisdb_sz.dbo.yp_drugname y ON a.drug_id_link = y.drug_id and y.flag =‘b‘

    LEFT JOIN sdyychisdb_sz.dbo.zd_ybdzyp z on a.charge_code=z.charge_code and a.serial=z.serialUNION all

    SELECT distinct ( ltrim(rtrim(pa.charge_code))+‘,‘+ltrim(rtrim(pa.serial))+‘,‘+ltrim(rtrim(pa.group_no))+‘,‘+‘2‘) ASdrugMainKey,

    pa.drugnameASdrugCommName,

    (case when isnull(py.drugname,‘‘)=‘‘ then pa.drugname else py.drugname end) ASdrugName,

    pa.specificationASdrugspecs,ltrim(rtrim(pb.unit)) ASdrugUnit,

    pe.dosanameASdrugFrom,

    pc.manu_nameASfactoryName ,

    pa.charge_codeAScharge_code,

    pa.serialASpackSeqNo,

    pa.group_noaspharmacyCode,

    pz.ybbm,

    pa.pack_sizeAS packSize, /*新增1*/

    ltrim(rtrim(pp.unit))AS drugUnit2 /*新增2*/

    /*pp.unit AS drugUnit2 新增2*/

    FROMsdyychisdb_pj.dbo.yp_mz_base paLEFT JOIN sdyychisdb_sz.dbo.yp_base pf ON pa.charge_code =pf.charge_codeLEFT JOIN sdyychisdb_sz.dbo.yp_unit pb ON pa.mini_unit =pb.codeLEFT JOIN sdyychisdb_sz.dbo.yp_unit pp ON pa.pack_unit = pp.code /*新增3*/

    LEFT JOIN sdyychisdb_sz.dbo.yp_manufacture pc ON pf.manufactory =pc.manu_codeLEFT JOIN sdyychisdb_sz.dbo.yp_dosage pe ON pf.dosage =pe.dosacodeLEFT JOIN sdyychisdb_sz.dbo.yp_drugname py ON pa.drug_id_link = py.drug_id and py.flag =‘b‘

    LEFT JOIN sdyychisdb_sz.dbo.zd_ybdzyp pz on pa.charge_code=pz.charge_code and pa.serial=pz.serialorder by drugMainKey

    2.2.1再建立表二,用来存放②中的数据。

    表二

    368c5b808460d7ac0c2cd05f65141427.png

    2.2.2代码实现②

    selectB.drugMainKey,B.drugCommName,left(namelist,len(namelist)-1)as drugname,B.drugsecs,concat(B.packSize,B.drugUnit,‘/‘,B.drugUnit2)as drugUnit,B.drugFrom,B.factoryName,B.charge_code,B.packSeqNo,B.phamacyCode,B.ybbm,B.packSize,B.drugUnit2 from(selectdrugMainKey,drugCommName,drugsecs,drugUnit,drugFrom,factoryName,charge_code,packSeqNo,phamacyCode,ybbm,packSize,drugUnit2,

    (select ltrim(rtrim(drugName))+‘,‘ fromxlyypwhere drugMainKey=A.drugMainKeyfor xml path(‘‘)) asnamelistfromxlyyp Agroup bydrugMainKey,drugCommName,drugsecs,drugUnit,drugFrom,factoryName,charge_code,packSeqNo,phamacyCode,ybbm,packSize,drugUnit2

    )BORDER BY drugMainKey DESC

    对于for xml path的用法的理解,可以参考另外一位园友的帖子。

    https://www.cnblogs.com/yasuo2/p/6433697.html

    原文:https://www.cnblogs.com/kingsgao/p/11720590.html

    展开全文
  • 投稿/科研合作:daixjdoctor@126.com联系我们:137704924或372699348群1-5:科研讨论、文献汇报群网站:...一、有空格的一数据分开为多以下数据为示例,所有数据挤在一起存放在一起。选中数...

    0bfa5b465033d3a072396fb06dcfc439.png

    投稿/科研合作:daixjdoctor@126.com

    联系我们:137704924或372699348

    群1-5:科研讨论、文献汇报群

    网站:http://www.sleep-brain.com/5237da0c469ed6afbfa57eb598488a9d.gif

    Excel中,经常存在这两个问题:

    1.有些数据中间有空格,我们想把这些数据放在不同列中。

    2.如何将多列数据合并为一列。

    一、有空格的一列数据分开为多列

    以下数据为示例,所有数据挤在一起存放在一起。

    300a26de16724ce67df61763dc9da977.png

    选中数据-->选中Excel中的“数据”-->选择“分列”-->选择“分隔符号”选项-->单击“下一步”-->勾选“空格”-->单击“下一步”-->完成。

    如下,将所有空格全部隔开为不同列了。

    6d878e6158cd110f3e89617e7bda52b1.png

    二、两列数据合并为一列

    合并2列数字在一起

    在两列数字后面一列空格处输入=,然后点击需要合并两列数据的第一列,然后输入函数符号“&”,然后点击第二列单元格。

    c00fc4aa711d000bb415739afefe0c7d.png

    输入完公式“=A1&B1”,如下。

    5cf2c0b22710149515f6644eee4644e0.png

    点击键盘“Enter”键即可合并两列数据,新生成数据顺序为我们前面加的顺序。得到CC

    将鼠标定在右下角,出现十字架双击,即可将函数自动全部下拉,整列全部运行上面同一个函数。这样就不需要我们一直往下拉让整列数据运行一样的函数了。

    52cd463908e03edbb87649c721e416e6.png 

    加入脑科学群,加小编微信(137704924)邀请(广告勿入)。

    f294610a06ead06bc9b5202eaed0c365.png532f0e72bfe91efe0e36a33edfd9deb2.gif

    声明:文章内容仅供参考,具体请咨询医生或相关专业人士。您若对该稿件内容有任何疑问或质疑,或需转载本文,请您与本微信公众号编辑部助理(微信号:编辑137704924或戴西件主编372699348)联系,我们将迅速给您回应并做处理。

    展开全文
  • 前言标题几乎已经说的很清楚了,在oracle中,concat()函数和 “ || ” 这个的作用是一样的,是将不同列拼接在一起;那么wm_concat()是将同属于一个组的(group by)同一个字段拼接在一起变成一行。mysql是一样的,只...

    前言

    标题几乎已经说的很清楚了,在oracle中,concat()函数和 “ || ” 这个的作用是一样的,是将不同列拼接在一起;那么wm_concat()是将同属于一个组的(group by)同一个字段拼接在一起变成一行。mysql是一样的,只不过mysql用的是group_concat()这个函数,用法是一样的,这里就不过多介绍了。大家可以直接戳这篇文章 了解 浅析MySQL中concat以及group_concat的使用

    这里我就以oracle介绍为主了,mysql同样的方法使用,就是换一个函数就是了。

    wm_concat()和concat()具体的区别

    oracle中concat()的使用 和 oracle中  “ || ” 的使用

    这两个都是拼接字段或者拼接字符串的功能。

    oracle中:

    concat只能连接两个字符串或者两个字段,|| 可以多次使用,拼接n个字符串或者字段。

    select concat('aaa','bbb') from dual /*结果为:aaabbb*/

    select 'aaa'||'bbb'||'ccc'||'ddd' from dual /*结果为:aaabbbcccddd*/

    如果concat()拼接多个话,就会报错,

    86cbc52f935f3e70d59b42fe74878e17.png

    mysql中

    concat()的使用,是可以连接多个字符串或者字段的。

    select concat('aaa','bbb','ccc','ddd') from dual /*mysql中执行 结果为:aaabbbcccddd*/

    wm_concat()的使用

    我看了大多数博客对wm_concat()这个个函数的介绍,我觉得都介绍的不是很完美,他们都是简单的说 这个是合并列的函数,但是我总结的概括为:把同组的同列字段合并变为一行(会自动以逗号分隔)。什么意思呢,举个例子呗。

    现在我有一张成绩表,如图,

    stuid 同学学号         coursename 课程名称            score 课程成绩

    说明一下,设计成绩表的时候,这里的coursename最好是设计成courseid,和课程表去关联,但是这里我就是测试,为了更简单的表达效果,所以这里暂时就以课程名称来设计了,希望大神不要喷我设计的表有问题哈,我数据库设计表也还是挺厉害的勒,嘿嘿,自恋一下。

    cb84472a19a0beafca6d4db2cb47b7b4.png

    问题:现在要将同一个同学的所有课程成绩以一行展示,sql怎么写呢?

    /*简单的合并同一个同学的课程*/

    select stuid,wm_concat(coursename)

    from stu_score

    group by stuid

    ef56e9519e60d20403de730636779e85.png

    我们再优化一下SQL,将成绩也放进去

    /*同一个同学的课程+成绩*/

    select stuid,wm_concat(coursename || '(' || score||')')

    from stu_score

    group by stuid

    607e0a10280411cf05b86914567882d9.png

    如果不想用逗号分隔,可以用replace函数替换逗号为你想要的分隔符号,

    /*同一个同学的课程+成绩,指定想要的分隔符*/

    select stuid,replace(wm_concat(coursename || '(' || score||')'),',','---')

    from stu_score

    group by stuid

    f014f1bd1e61720a53cb55b705794a98.png

    mysql是一样的用法,把wm_concat 换成 group_concat()就可以啦,具体可以参考这篇文章的使用:浅析MySQL中concat以及group_concat的使用

    不知道大家学会这个wm_concat()这个函数的用法了吗

    参考文章:

    感谢原作者的分享,让技术人能够更快的解决问题

    展开全文
  • 标题几乎已经说的很清楚了,在oracle中,concat()函数和 “ || ” 这个的作用是一样的,是将不同列拼接在一起;那么wm_concat()是将同属于一个组的(group by)同一个字段拼接在一起变成一行。mysql是一样的,只不过...
  • 很多时候,咱们的数据是按照部门或是月份等项目,分别存放在不同工作表中的,要对这些数据进行分析汇总的时候,需要先将不同工作表中的数据合并一起才可以。就像下图所示的数据,三个工作表中是某品牌的商品,...
  • 如何将几列合并为一

    千次阅读 2018-04-07 14:34:59
    使用+将不同列合并在一起 twitter_archive_enhanced_clean['d1'] = s.str.findall('doggo') twitter_archive_enhanced_clean['d2'] = s.str.findall('floofer') twitter_archive_enhanced_clean['d3'] = s.str....
  • 你将很难找到不需要串联的大数据分析项目(将多个数据源组合在一起)。通常,数据分析要求将新行添加到表中,在更复杂的情况下(在更复杂的情况下)拉出更多,将不同的表合并到一个公共键上。所有这些技巧都可以轻松地...
  • 合并两列为一

    2015-01-14 15:29:12
    一般情况下,我们将由不同栏位获得的资料串连在一起。每一种资料库都有提供方法来达到这个目的: MySQL: CONCAT() Oracle: CONCAT(), || SQL Server: +
  • InnoDB的聚簇索引实际上在同一个结构中保存了B-Tree索引和数据行(索引的顺序与数据的物理存放位置一致,“聚簇”表示数据行和相应的键值紧凑地存储在一起),因为无法同时把数据行存放在两个不同的地方,所以一个表...
  • 很多时候,咱们的数据是按照部门或是月份等项目,分别存放在不同工作表中的,要对这些数据进行分析汇总的时候,需要先将不同工作表中的数据合并一起才可以。就像下图所示的数据,三个工作表中是某品牌的商品,...
  • 很多时候,咱们的数据是按照部门或是月份等项目,分别存放在不同工作表中的,要对这些数据进行分析汇总的时候,需要先将不同工作表中的数据合并一起才可以。就像下图所示的数据,三个工作表中是某品牌的商品,...
  • 很多时候,咱们的数据是按照部门或是月份等项目,分别存放在不同工作表中的,要对这些数据进行分析汇总的时候,需要先将不同工作表中的数据合并一起才可以。就像下图所示的数据,三个工作表中是某品牌的商品,...
  • pandas经常是和NumPy,Scipy以及数据可视化工具matplotlib一起使用的。pandas支持大部分NumPy语言风格的数组计算,但最大的不同在于pandas是用于处理表格型或异质型数据的。而NumPy更适合处理同质型的数值类数组数据...
  • 如果要实现EXT Gridpanel的锁和多表头整合一起使用,有点难度!因为它们是两个不同的扩展组件。 目前我有一个做法,效果我已经上传。就是用两个GridPanel,数据共享一份, 一个把需要锁定的显示(考虑锁定...
  • pandas经常是和NumPy,Scipy以及数据可视化工具matplotlib一起使用的。pandas支持大部分NumPy语言风格的数组计算,但最大的不同在于pandas是用于处理表格型或异质型数据的。而NumPy更适合处理同质型的数值类数组数据...
  • 将两个表按行合并在一起。使用union将两个表联结在一起。union将重复数据删除;union all保留重复数据b.注意事项作为运算对象的记录数必须相同.。当两张表的数不相同时,UNION是不能将两张表相加的。作为运算...
  • pandas - 合并

    千次阅读 2019-03-12 09:29:35
    如果你的数据由多张表组成,那么有时候需要将不同的内容合并在一起分析 1 pd.concat实现数据合并 pd.concat([data1, data2], axis=1) 按照行或进行合并 比如我们将刚才处理好的哑变量与原数据合并 pd....
  • Union由于要进行反复值扫描,所以效率低。假设合并没有刻意要删除反复行,那么就使用Union All两个要联合的SQL语句 字段个数...union(或称为联合)的作用是将多个结果合并在一起显示出来。union和union all的差别是...
  • Pandas之数据合并

    2020-12-22 23:17:39
    如果你的数据由多张表组成,那么有时候需要将不同的内容合并在一起分析 1 pd.concat实现数据合并 pd.concat([data1, data2], axis=1) 按照行或进行合并,axis=0为索引,axis=1为行索引 比如我们将刚才处理好的...
  • 我有不同的数据文件,需要根据日期将它们合并在一起。如果我只有两个文件,我可以用df1.merge(df2, on='date'),如果我尝试使用三个文件,我会使用df1.merge(df2.merge(df3, on='date'), on='date'),但是有多个...
  • 很多时候,咱们的数据是按照部门或是月份等项目,分别存放在不同工作表中的,要对这些数据进行分析汇总的时候,需要先将不同工作表中的数据合并一起才可以。就像下图所示的数据,三个工作表中是某品牌的商品,...
  • 很多时候,咱们的数据是按照部门或是月份等项目,分别存放在不同工作表中的,要对这些数据进行分析汇总的时候,需要先将不同工作表中的数据合并一起才可以。就像下图所示的数据,三个工作表中是某品牌的商品,...
  • pandas高级处理-合并

    2021-02-27 22:09:08
    如果你的数据由多张表组成,那么有时候需要将不同的内容合并在一起分析 1 pd.concat实现数据合并 pd.concat([data1, data2], axis=1) 按照行或进行合并,axis=0为索引,axis=1为行索引 比如我们将刚才处理好...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 246
精华内容 98
关键字:

不同列合并在一起