sql 语句优化,将2行查询结果合并到一行。

select emp_chg_other.s_name,project_table.project_name from kc_billhead,project_table,emp_chg_other,hr_epm_station,fg_ogm_station where kc_billhead.tr_proj=project_table. pc and project_table.pc=emp_chg_other.chg_data and emp_chg_other.emp_id=hr_epm_station.ccode and hr_epm_station.station=fg_ogm_station.cno and hr_epm_station.station='0106' and kc_billhead.billno='CGRK20180102001';

图片说明

16个回答

有一种死办法,concat(字段1,字段2)
具体写法 select concat((select 字段A from 表 where 条件=第一行),(select 字段A from 表 where 条件=第二行));这样即可

select
eco.s_name,pt.project_name
from kc_billhead kb
LEFT JOIN project_table pt ON kb.tr_proj= pt. pc
LEFT JOIN emp_chg_other eco ON pt.pc=eco.chg_data
LEFT JOIN hr_epm_station hes ON eco.emp_id = hes.ccode and hes.station='0106'
LEFT JOIN fg_ogm_station fos ON hes.station=fos.cno

where kb.billno='CGRK20180102001';

qq_22847605
qq_22847605 回复darklinboxs: 或者你采用存储过程用游标将数据进行拼凑也行
一年多之前 回复
qq_22847605
qq_22847605 回复darklinboxs: 这个只是优化,合并的要用临时表
一年多之前 回复
darklinboxs
darklinboxs 我的是ms sql
一年多之前 回复
darklinboxs
darklinboxs 不行,老铁,试过了。
一年多之前 回复

oracle数据库吗?

darklinboxs
darklinboxs 我是ms sql
一年多之前 回复

可以看看这篇文章,sql的纵横查询,希望能够帮助你
http://blog.csdn.net/mango_love/article/details/51210020

这个是mysql数据库把

跪求大神教育,优化,msql

2行合并只能采用临时表了

可以使用 LISTAGG 语句 尝试一下

使用listagg( ) within group ( order by )

darklinboxs
darklinboxs 原语句操作一下吧,老铁。
一年多之前 回复

前面说的对生成临时表

共16条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
sql查询的3个结果如何合并到同一行
[img=https://img-bbs.csdn.net/upload/201603/08/1457423323_584148.png][/img]rn如上图所示请问如何将3个结果合并到同一行呢????
[转]将查询结果中同一字段多行合并到一行上的SQL语句写法
在开发过程中经常碰到要实现按照某一字段,将其它字段中不同的值连接后显示到一行上的需求。本人总结了以下几种方法,在实际开发中可以参考。 建立表结构,在Oracle9i上。 CREATE TABLE temp ( DEPTNO   int, ENAME   varchar(20 BYTE), SEX   varchar(20 BYTE), AGE   varchar...
把多行结果合并到一行
语句:select name from trn结果:rnnamern关羽rn秦琼rn我想得到rn关羽,秦琼rn的结果,该怎么写rn rn
怎样将查询出的记录合并到一行 不重复
怎样通过查询将下面的重复cardno 变成一行即rnrnworkshop cardno qty Inticket exitticketrnT01 116680300169 2 4 20rnT01 116680300170 2 4 20rn*****rnselectrntotal.Workshop,rntotal.Card# as cardno,COUNT(*)as qty,rncase when total.Ticket#=4 then total.Ticket# end as Inticket,rncase when total.Ticket#=20 then total.Ticket# end as exitticketrnfrom(rnselectrnonly.Ticket#,rnonly.[Receive Time],rnonly.Workshop,rnonly.Card#rnfrom test.dbo.TicketDetailData125 onlyrngroup byrnonly.Workshop,rnonly.Card#,rnonly.Ticket#,rnonly.[Receive Time]rnrn)totalrnwhere rntotal.Workshop=total.Workshoprngroup byrntotal.Workshop,rntotal.Card#,rntotal.Ticket#,rntotal.[Receive Time]rnorder byrntotal.Workshoprn现在查出的结果rn![图片说明](https://img-ask.csdn.net/upload/201812/18/1545103104_820043.jpg)
如何将SQL语句中的两行结果合并到一行
有如这样的表:rnname statusrn小张 普通员工rn小张 组长rn小二 经理rn小三 老板rn小三 员工rnrn如何使查询出的结果为rn小张 普通员工,组长rn小二 经理rn小三 老板,员工rnrnrn还请各位帮忙
将SQL语句合并为一行
有如下代码: select sum(b.qob_bornuptotal) / 10000 AS qob_bornuptotal, a.CX_TYPE_DETAIL FROM BUS_BB_CX a left join BUS_BB_QOB b on a.cx_name = b.qob_cx WHERE b.qob_company = '431682696' and b
关于查询结果中多行字段合并到一行上的SQL语句写法
[code=sql]rnSELECT rnC.CUST_ID,C.CUST_NAME,S2.PVI,S3.PUI_NBR rnFROM CUST C,SERV_SERVICE S1,SERV_PVI S2,SERV_PUI S3 rnWHERE C.CUST_ID=S1.CUST_ID rnAND S1.SERV_SERVICE_ID=S2.SERV_SERVICE_ID rnAND S1.SERV_SERVICE_ID=S3.SERV_SERVICE_ID rnAND S1.STATE='S11' rnAND C.CUST_NAME LIKE '韩永佳%';rnrn[/code]rn结果是这样rn[img=http://img.my.csdn.net/uploads/201304/25/1366857142_4634.jpg][/img]rn我想让结果只显示成一行。把PUI_NBR分三列显示SQL怎么写?
查询结果中多行字段合并到一行上的SQL语句写法
CREATE TABLE temp rn( rnDEPTNO int, rnENAME varchar(20), rnSEX varchar(20), rnAGE varchar(20) rn)rninsert into temp values(10,'aaa','AA','18') rninsert into temp values(10,'bbb','BB','19')rninsert into temp values(10,'ccc','CC','20') rninsert into temp values(20,'ddd','DD','21')rninsert into temp values(20,'eee','EE','22')rninsert into temp values(20,'fff','FF','23') rninsert into temp values(30,'hhh','HH','24') rninsert into temp values(30,'ggg','GG','25') rninsert into temp values(30,'yyy','YY','26') rninsert into temp values(30,'ttt','TT','27') rnrnrn需要的查询显示结果为rn10 aaa AA 18 bbb BB 19 ccc CC 20rn20 ddd DD 21 eee EE 22 fff FF 23rn30 hhh HH 24 ggg GG 25 yyy YY 26 ttt TT 27rnrn
[转]多行字段合并到一行上的SQL语句写法
多行字段合并到一行上的SQL语句写法 2011-04-06 22:24 ------------------------------多行字段合并到一行上的SQL语句写法---------------------------------- 在开发过程中经常碰到要实现按照某一字段,将其它字段中不同的值连接后显示到一行上的需求。 本人总结了一下两种方法: CREATE TABLE de...
oracle数据库将多个列的查询结果集合并到一行中
oracle数据库使用系统函数将多个列的查询结果集合并到一行中。
sql 将2行,并成一行。
原表rntablernid typeid info timern1 1 sohu 2013-03-05rn2 2 sina 2013-03-05rn3 1 sohu 2013-03-06rn4 2 sina 2013-03-06rnrn想要的效果:rnid typeid info time newid newtypeid newinfo newtimern1 1 sohu 2013-03-05 3 1 sohu 2013-03-06rn2 2 sina 2013-03-05 4 2 sina 2013-03-06rnrn试了好久还是没弄出来,有人来帮帮忙么?
求两次查询合并到一个SQL语句
第一次查询语句为rn[code=SQL]select a.STOREID,a.fj,a.cbdw,a.xbrq,a.dbsx,a.dbbh,a.dbrq,a.dblb,a.lwdw,b.blqkwj,b.blrq,b.blqk,c.bljgwjrnfrom tab801 a,tab805 b,tab808 crnwhere a.cbbljg_doc = concat('808.',c.storeid) and a.cbblqk_doc = concat('805.',b.storeid)rnorder by a.storeid[/code]rnrn对查询的结果,进行第二次查询,查询条件是rn[code=SQL]where EXISTS(SELECT 1 FROM tab801_$$$_TEMP t WHERE tab801.STOREID=t.ID AND t.FLAG=1)rn[/code]rn也即对第一次查询的结果,再根据表tab801的主键,过滤出只在tab801_$$$_TEMP中存在该主键的记录。
一条sql语句将两行查询结果现在为一行
select name from city where id=1611 or id=1612rn上述语句结果为rnnamern河北rn石家庄rnrn如果用一条sql语句显示成rn河北石家庄 rn请高手帮忙!rnrn
怎么把兩行合并到一行中.
我有一個表字段為:rn員工工號 加班類類 加班時間rn008983 1平日 12rn008983 2周日 23rn008983 3假日 36rn008990 1平日 42rnrn怎么才能以怎樣方式顯示出來:rn工號 平日 周日 假日 rn008983 12 23 36rn008990 42 0 0rnrn
sql将两个表中主键相同的行的内容合并到一行
我大概画画,目的就是这样:A和B相同的主键的话内容要合并在一起 如果知道哪个表里的数据多的话可以用左连接,但是这个是不知道哪个表数据比较多,所以这里使用全连接 select ISNULL(a.id,b.id) as [id], a.des, b.des from a full join b on a.id = b.id; 好简单的东西,浪费了我半天
查询结果合并成一行的问题
有一张表, rnmydate,xx1,xx2rn2004-10-1,aaa,aaa1rn2004-10-2,bbb,bbb1rn2004-10-3,ccc,ccc1rn我想查询出来的结果是2004-10-3这一天的XX1,xx2并上昨天的XX1,xx2成为一行如下rn2004-10-3,ccc,ccc1,bbb,bbb1rn这应该怎么写呢?
DB2多行结果合并到一行排列输出(类似递归)
需实现这样的功能,把同样接单量的人员姓名通过逗号分隔存到一个字段中 1 张三 1 李四 1 王五 处理后: 1  张三,李四,王五   -------------------------------------------分隔线----------------------------------------------   DW_RPT.TDM_ONLINESERVICE_CH...
sql将查询结果将多列合并成一列
mysql: select concat(str1,str2,str3) from 表; -- concat可以带多个参数 oracle : select concat(str1,str2) from 表; -- concat只能带两个参数 select str1||str2||str3 from 表;
[急]SQL怎么把2行一样的列合并到一行,用“;”隔开?
表1rnrnid namern01 小张rn01 小王rn02 小王rn02 小陈rnrn请问怎样变成 rnid namern01 小张;小王rn02 小王;小陈rnrn谢谢!另外我就10分了
orcale 中查询多行 后合并到一行显示
  select listagg(某列,',')within group(order by 某列主键 desc)from 某表;     详细: 1、有一表,表结构如下: 2、想把这张表的信息合并一下,即以ID 和CODE 为联合主键,分组合并,把CODENAE里信息合并到一行里;此处用到多行合并到一行,合并结果如下:   步骤: 1.建表: create tab...
求把多行合并到一行的方法
DECLARE @t TABLE (csup_id nvarchar(50),md money)rnINSERT INTO @t VALUES ('20170026',4554.00)rnINSERT INTO @t VALUES ('20170024',-212.00)rnINSERT INTO @t VALUES ('20170024',989.00)rnINSERT INTO @t VALUES ('20170026',98987.00)rnrn我想得到的结果:20170026,4554.00+98987.00;20170024,-212.00+989.00rn
如何把多行数据合并到一行?
表如下:rnrn 单位 级别 姓名rn 单位A 处级 张三rn 单位B 处级 李四rn 单位A 科级 王五rn 单位B 科级 小六rnrnrnrn现在要统计各单位各级别分别多少人,以及各单位,或者各级别总共多少人,需要统计如下:rn 处级 科级 总计rn单位A 1人 1人 2人rn单位B 1人 1人 2人rn总计 2人 2人 4人rnrnrn能用一个SQL语句实现吗?rn有什么好的解决办法?
求sql语句,下一行是以上所有行的合
请问,如下表一到表二转换的语句怎么写 rn rn no val rn 1 19 rn 2 37 rn 3 43 rn 4 98 rn rn 到表二: rn rn no val val2rn 1 19 19rn 2 37 56 注:(37+19) rn 3 43 99 注:(43+37+19) rn 4 98 197 注:(98+43+37+19)
让两个查询结果合并成一行的sql怎么写?
[code=sql]rnCREATE TABLE `test` (rn `id` int(11) NOT NULL auto_increment,rn `name` varchar(10) default NULL,rn `num` varchar(5) default NULL,rn `year` varchar(5) default NULL,rn `money` int(11) default NULL,rn PRIMARY KEY (`id`)rn) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;rnrnINSERT INTO `test` VALUES ('1', '张三', 'A0001', '2012', '1000');rnINSERT INTO `test` VALUES ('2', '李四', 'A0002', '2012', '200');rnINSERT INTO `test` VALUES ('3', '张三', 'A0001', '2013', '300');rnINSERT INTO `test` VALUES ('4', '王五', 'A0003', '2013', '600');rnINSERT INTO `test` VALUES ('5', '张三', 'A0001', '2014', '1500');rnINSERT INTO `test` VALUES ('6', '王五', 'A0003', '2014', '2000');rnINSERT INTO `test` VALUES ('7', '李四', 'A0002', '2014', '700');[/code]rn我要查询year=2012和2013时的数据,让查出的显示在一行,这样的sql要怎么写?rn[code=text]rnname num year1 money1 year2 money2rn张三 A0001 2012 1000 2013 300rn李四 A0002 2012 200rn王五 A0003 2013 600rn[/code]rn
怎样将多个查询结果合并成一个查询结果
我想将每一天的查询结果合并成一个查询表(一个月的),怎样实现
sql语句查询结果
比如select id from room where roomcode = 1;rn我想把这个查询出来的结果给一个变量可以不了?rn怎么弄了。请牛人帮忙解决下,谢谢!
sql 语句的查询结果
有3张表rn学生表studentrnSno Snamern201215121 李勇 rn201215122 刘晨 rn201215123 王敏 rn201215126 杨天 rn201215125 张立 rnrn课程表coursernCno Cnamern1 数据库 rn2 数学 rn3 信息系统 rn4 操作系统 rn5 数据结构 rn6 数据处理 rn7 PASCAL语言 rnrn选修成绩表SCrnrnSno Cno Gradern201215121 1 92rn201215121 2 85rn201215121 3 88rn201215122 2 90rn201215122 3 80rn201215126 1 80rn201215126 2 70rn201215126 3 60rn201215126 4 85rn201215126 5 89rn201215126 6 90rn201215126 7 94rnrn现在我想查找哪些选了全部的课程,用exists实现rnselect snamernfrom studentrnwhere existsrn (select *rn from scrn where student.sno=sc.snorn group by sc.snorn having count(cno)=7)rn结果是正确的,就是:杨天rn但是,如果我用 not exists,就不对了。我的SQL代码如下rnselect snamernfrom studentrnwhere not existsrn (select SC.snorn from scrn where Student.Sno=sc.snorn group by SC.snorn having count(cno)!=7)rnrn结果为rnsnamern王敏 rn张立 rn杨天 rnrn没搞懂啊,两个否定应该是一样的效果啊rn相关子查询,带入应该也没问题啊rn求教!谢谢了!rn
有什么办法将多个查询结果合并到一起!sql,decode
select distinct a.hh,rn decode(b.jcdm,'010',b.qsrq) rq1,decode(b.jcdm,'020',b.qsrq) rq2, decode(b.jcdm,'030',b.qsrq) rq3,decode(b.jcdm,'040',b.qsrq) rq4rn FROM yhda a,jcgl b where a.hh=b.hhrnrn出现的结果会是:rn 1001 2002.6.1 null null nullrn 1001 null 2002.6.2 null nullrn 1001 null null 2002.6.3 nullrn 1001 null null null 2002.6.4rnrn怎样得到这样的结果:rn 1001 2002.6.1 2002.6.2 2002.6.3 2002.6.4rn
mysql将两个表结果合并到一起
功能:         使用mysql中union all 将2个表中的数据查询结果合并到一个返回结果中。再针对结果统一排序操作等。(注:2个表返回的列名必须一致) 语句如下: SELECT 表1.字段, 表2.字段, ... FROM (SELECT 表.字段1, 表.字段2 FROM 表 WHERE 条件 ) 表1 UNION ALL (SELEC
[MYSQL]mysql将两个表结果合并到一起
功能:         使用mysql中union all 将2个表中的数据查询结果合并到一个返回结果中。再针对结果统一排序操作等。(注:2个表返回的列名必须一致) 语句如下: SELECT     表1.字段,     表2.字段,     ... FROM     (SELECT         表.字段1,         表.字段2     FROM         表     WH...
关于两个查询结果合并到DataGrid的问题
前提:rn Dim strSQL1 = "SELECT A.MAKE_P,C.CUSTPART FROM A INNER JOIN C ON A.C_PTR = C.Rkey"rn Dim strSQL2 = "SELECT B.MAKE_P,C.CUSTPART FROM B INNER JOIN C ON B.C_PTR = C.Rkey"rnrn问题:1、如何将以上两个查询的结果合并到同一DataGrid中;rn 2、如果可以在SQL中直接合并查询也可以;rn 3、能有更好的解决方法就最好了,:)rn备注:不可以更改数据库结构
%……%……%……把查询结果按照格式合并到一个字段%……%……%……
现有问题:rnrnselect result_SN from tai_dc_resdata;rnrnrn这样的话查到的结果会体现为:rnrnresult_SNrn958578rn958579rn958580rn958581rn958582rn958583rn958584rn……rnrn但是现在需求是想把查询到的结果合并为一个字符串rn最重要的是 958578#958579#958580……这样的一个大字符串rnrn直接用select的方式可以实现吗?rnrnrn不用自定义函数或者存储过程之类的可以吗?rnrn
SQL语句优化2
开-闭原则(OCP):一个软件实体应当对扩展开放,对修改关闭。 里氏代换原则(LSP):一个软件实体如果使用的是一个基类的话,那么一定适用于其子类。 依赖倒转原则(DIP):要依赖于抽象,不要依赖于具体。 接口隔离原则(ISP):使用多个专门的接口比使用单一的总接口要好。 合成/聚合复用原则(CARP):要尽量使用合成/聚合,尽量不要使用继承。 迪米特法则(LoD):一个对象应当对其他对象有尽可能少的了解
SQL查询结果补行。
select * from tab 的结果为:rn2007-03-09 138.00 rn2007-03-10 74.50 rn也就是说这个月只有9号和10号有数据,但是我想让那些没有数据的日期也显示出来,即:rn2007-03-01 0.00rn2007-03-02 0.00rn……rn2007-03-09 138.00 rn2007-03-10 74.50rn…… rn2007-03-31 0.00rn不知道能不能实现?
取查询结果重复行的最后一行
例如有张A表rnid valuern1 44rn2 44rn3 34rn4 56rn5 44rn6 56rn7 34rnrn我需要的结果是取value的值里面对应的最后一行的信息rnid valuern5 44rn7 34rn6 56rnrn请问这条SQL语句要怎么写?
指定行合并为一行
file 11111111111111111111 2222222 333333333333333333 4444444444444444444444 5555555555555555 666666666666666666666 777777777777777777777777777777 88888 合并为: 11111111111111111111 22222223333
SQL怎样将两行合并为一行
现要将表rnmaterial unit xhdate xhqty inDate inQtyrn材料1 米 2007-2-1 2000 null nullrn材料1 米 null null 2007-2-1 200rn材料2 方 2007-7-4 500 null nullrn材料2 方 null null 2007-7-4 20rn材料2 方 null null 2007-7-5 30rn材料2 方 2007-7-6 30 null nullrnrn显示成rnmaterial unit xhdate xhqty inDate inQtyrn材料1 米 2007-2-1 2000 2007-2-1 200rn材料2 方 2007-7-4 500 2007-7-4 20rn材料2 方 null null 2007-7-5 30rn材料2 方 2007-7-6 30 null nullrnrn如果材料名相同并且xhDate 和inDate相同就把相同的两行合并成一行,这个SQL要怎样写啊rn请各位大侠帮手.rn
sql查询将多个结果合并成一个字符串
1.user表:id name roles 1 张三 null 2 李四 null 3 王五 null role表 id name 1 管理员 2 业务员 3 工程师 user_role表 user_id role_id 1 1 2 2 2 3 3 34.查询sqlS
请教多行合一行的sql语句
时间和编号相同:rnID STCD TM Z Q rnrn1 S1 2009-08-10 08:00:00 12 nullrn2 S1 2009-08-10 08:00:00 null 25rnrnrn输出为rnID STCD TM Z Q rn1 S1 2009-08-10 08:00:00 12 25rnrnrnrn
git-将dev代码合并到test
1. 在dev分支上刚开发完项目,执行以下命令:git add git commit -m 'dev'git push -u origin dev2.切换到test分支上如果是多人开发,先把远程代码pull下来git pull origin test如果是单人开发,就没必要了,但为了保险起见,还是先pull一下3.然后我们把dev上的代码合到test上git merge dev4.然后查看状...
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview