实现多行合并一行的SQL写法
[ORACLE]
项目中遇到一个需求,需要将多行合并为一行。
表结构如下:
NAME Null Type
------------------------ --------- -----
N_SEC_CODE NOT NULL CHAR(6)
C_RESEARCHER_CODE NOT NULL VARCHAR2(20)
此表保存了“股票”与“研究员”的对应关系数据,一般而言,对于同一只股票而言,可能有多个研究员
对其进行跟踪研究。所以目前遇到一个要求,需查询出每只股票和对应的研究员(研究员代码间,使用逗号分隔)。
例如有如下数据:
000297 chenpeng
000297 liusu
合并处理后需显示为:
000297 chenpeng,liusu
网上查了很多方法,但通常而言都是编写自定义多行文本合并函数,或者对支持的列数具有局限性。
最后在英文google中搜到如下比较巧的方法。不用在数据库中增加function,纯SQL一次性搞定,
而且扩充性很好,没有列的限制。
主要SQL如下:
SELECT n_sec_code, TRANSLATE (LTRIM (text, '/'), '*/', '*,') rese
相关文档:
SQL*PLUS的使用
1、退出SQL*PLUS
EXIT:终止SQL*PLUS,并将控制权交还给OS。
2、编辑命令
1) List或L:显示缓冲区中所有的行。
SQL> list
1 select
2 *
3* from dept --注:*代表当前行。 ......
1
bigint
从 -2^63 到 2^63-1 之间的 integer (整数)数据
2
binary
定长的binary数据,最长为8,000字节
3
bit
integer数据,值为1或0
4
char ......
SQL语句中的Having子句与where子句之区别
---WHERE句子作用于基本表或试图,从中选择满足条件的元组。HAVING作用于组,从中选择满足条件的组---
在说区别之前,得先介绍GROUP BY这个子句,而在说GROUP子句前,又得先说说“聚合函数”——SQL语言中一种特殊的函数。例如SUM, COUNT, MAX, AVG等。这 ......
SQL语句的优化就是将性能较低的SQL语句转换达成同样目的性能优异的SQL语句
下面我们一起来看看一些可以优化SQL的方法,希望大家多提出意见我们共同学习或者是大家有什么好的优化方法可以提出来共享一下。
第一种优化(使用指定列代替”*”)
使用“*&rdquo ......
1=1或者'a'='a'等等恒等式是T-SQL中表达true的方法。因为在T-SQL中没有true这样的关键
字或值,所以需要借助这些恒等式来表达true的概念。
相对的,同样可以使用1<>1或者1=2等来表达false。
在应用程式的安全性方面,使用这些式子是SQL注入的基本原理,所以在拼接SQL语句的时候要过滤各种各样的敏感字
符。
当然 ......