SELECT distinct TEMP.vch_number,TEMP.vch_code,
vch_name=stuff((select ';'+vch_name from TABLEB where (vch_number=TEMP.vch_number and vch_name<>'' ) for xml path('')),1,1,'')
FROM #TBL_READ_NUMBER TEMP
很多场合我们都会用到oracle的列合并,oracle提供了如下一些方法用来实现列合并:
一、Oracle 10G以前使用WMSYS.WM_CONCAT:
wmsys.wm_concat将字段的值用","来隔开。
sql;">
select id,wm_concat(name) from tab_name group by id;
二、使用sys_connect_by_pathsys_connect_by_path(字段名,2个字段之间的连接符号),这里的连接符号不要使用逗号,oracle会报错,如果一定要用,可以使用replace替换一下,方法如下 REPLACE(字段名,原字符,',')。这个函数使用之前必须先建立一个树,否则无用。
三、Oracle 11G以后可以使用listagg
sql;">
select listagg(id,') within group (order by id) col_name from tab_name;
四、使用自定义函数:
sql;">
create or replace function getRow(table1 varchar2,ptdb1 varchar2) RETURN VARCHAR2 is
Result VARCHAR2(1000);
begin
FOR cur IN (SELECT audit_code FROM sys_audit_column t2 WHERE table1 =
t2.table_name and ptdb1 = t2.ptdb_name) LOOP
RESULT := RESULT||cur.audit_code||',';
END LOOP;
RESULT:=rtrim(RESULT,');
return(Result);
end getRow;
总结
以上是编程之家为你收集整理的oracle列合并的实现方法全部内容,希望文章能够帮你解决oracle列合并的实现方法所遇到的程序开发问题。
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
SELECT distinct TEMP.vch_number,TEMP.vch_code,
vch_name=stuff((select ';'+vch_name from TABLEB where (vch_number=TEMP.vch_number and vch_name<>'' ) for xml path('')),1,1,'')
FROM #TBL_READ_NUMBER TEMP
转载于:https://www.cnblogs.com/Aaron-Lee/p/7552298.html
2008-06-05
怎么将两个本地磁盘合并在一起啊!急啊!
如果不合并C盘建议将C盘的程序软件转移到非系统盘中,这样又节约了C盘的地方,今后重装后还不用重装软件了(用系统自带的备份与恢复工具进行备份与恢复,方法下面有)。
C盘空间不足的解决方法
从现在开始下载软件或文件,不要放在C盘,按照下面方法做能腾出不少空间。
1、将虚拟内存移到非系统盘中。
2、将IE临时文件转移到非系统盘中,打开IE选工具/Interner选项/Interner临时文件中的设置/选好移动后的路径后按确定应用,重启即可。
3、如果空间不够在将一些软件移到非系统盘中,如果够了,今后就不要在把软件或文件下载到C盘了,在平时用超级兔子及时清理系统垃圾即可。
4、C盘中,只要...全部
如果不合并C盘建议将C盘的程序软件转移到非系统盘中,这样又节约了C盘的地方,今后重装后还不用重装软件了(用系统自带的备份与恢复工具进行备份与恢复,方法下面有)。
C盘空间不足的解决方法
从现在开始下载软件或文件,不要放在C盘,按照下面方法做能腾出不少空间。
1、将虚拟内存移到非系统盘中。
2、将IE临时文件转移到非系统盘中,打开IE选工具/Interner选项/Interner临时文件中的设置/选好移动后的路径后按确定应用,重启即可。
3、如果空间不够在将一些软件移到非系统盘中,如果够了,今后就不要在把软件或文件下载到C盘了,在平时用超级兔子及时清理系统垃圾即可。
4、C盘中,只要是自己下载的软件或文件都可以删除(如果系统不让删除,请开机按F8到安全模式中删除)。
设置虚拟内存方法:右击我的电脑/属性/高级/性能中的设置/高级/虚拟内存中的更改/选自定义大小,在初始大小和最大值,同时设为你的物理内存的两倍。
如果你的内存是512MB,就将初始大小和最大值同时设为设为1024MB。设置后需按“设置”按钮,然后再按确定和应用,重新启动电脑设置生效。
设置虚拟内存,存储在非系统盘方法:
右击我的电脑/属性/高级/性能中的设置/高级/虚拟内存中的更改/注意:先选中驱动器[卷标]中的C:后点选“无分页文件”在按“设置”按钮,这时已经取消了C盘的虚拟内存。
然后你在点选自定义大小,将驱动器[卷标]设在其它盘,并且输入虚拟内存数,然后按“设置”按钮,再按确定应用,重新启动电脑设置生效。
如果你想使C盘空间变小点的话可以删除以下文件夹中的内容:
c:\Documents and Settings\用户名\Cookies\下的所有文件(保留index文件)
c:\Documents and Settings\用户名\Local Settings\Temp\下的所有文件(用户临时文件)
c:\Documents and Settings\用户名\LocalSettings\TemporaryInternet Files\下的所有文件(页面文件)
c:\Documents and Settings\用户名\Local Settings\History\下的所有文件(历史纪录)
c:\Documents and Settings\用户名\Recent\下的所有文件(最近浏览文件的快捷方式)
c:\WINDOWS\Temp\下的所有文件(临时文件)
c:\WINDOWS\ServicePackFiles(升级sp1或sp2后的备份文件)
c:\WINDOWS\Driver Cache\i386下的压缩文件(驱动程序的备份文件)
c:\WINDOWS\SoftwareDistribution\download下的所有文件
如果对系统进行过windoes updade升级,则删除以下文件:
c:\windows\下以 $u。
。。 开头的隐藏文件
如果你有开启系统还原功能的话,可以把还原点给删了,你可以先自己创建一个还原点,再通过开始-所有程序-附件、系统工具-磁盘清理-其它选项-系统还原,他会删掉除最后一个你自己创建的还原点以外的所有还原点。
用系统自带的“备份或还原向导”功能备份数据。
1、开始/所有程序/附件/系统工具/备份/将弹出“备份或还原向导”对话框,单击下一步。
2、在弹出的对话框选中“备份文件和设置”,然后单击“下一步”弹出“要备份的内容”的对话框。
3、在打开的对话框中,用户可以选择要备份的内容,如果要备份的内容没有列出可选择“让我选择要备份的内容”的单选按钮,然后单击“下一步”,将弹出“要备份的项目”对话框。
4、在对话框中,单击文件名称左面的复选框,选中要备份的文件,单击“下一步”将弹出“备份类型、目标和名称”对话框。
5、在打开的对话框中,用户可以选择备份文件类型、命名备份文件,单击“浏览”按钮用户还可以指定备份文件存在什么地方。完成后单击“下一步”,将弹出“正在完成备份和还原向导”对话框,单击“完成”按钮,系统开始数据备份。
6、数据备份时系统将显示备份进度,备份完成后将显示“已完成备份”对话框。单击“完成”按钮,数据备份即告完成。
还原系统备份的数据,打开“备份或还原向导”界面。
1、选中“还原文件和设置”,单击“下一步”,弹出“还原项目”对话框。
2、双击“要还原的项目”列表中需要还原的备份项目,再在右边窗格中选择要还原的位置,单击“下一步”,弹出“正在完成备份或还原向导”单击“完成”,开始还原文件。
。收起
日常工作中,我们可能会遇到将不同列的数据合并为一列,前提是他们之间没有同行的数据,合并后不会覆盖数据。
例如我们需要将下面几列的数据合并为一列:
这是举例的数据,现实生活中可能数据量会有点大
想要快速的实现,第一个方法就是使用 “ & ”函数:
回车向下拉即可,如果合并之后有空格,那么选中所在列替换空格就好。
还有一种方法:CONCATENATE 函数
其实还有使用VBA去实现的,但是最快速简便的方法我能想到的就是这两点,后续还有的话会更新出来!