是否可以构造SQL来连接多行的列值?
以下是一个例子:
表A.
PID A B C
表B.
PID SEQ Desc A 1 Have A 2 a nice A 3 day. B 1 Nice Work. C 1 Yes C 2 we can C 3 do C 4 this work!
SQL的输出应该是 -
PID Desc A Have a nice day. B Nice Work. C Yes we can do this work!
所以输出表的Desc列基本上是表B的SEQ值的串联?
有没有SQL的帮助?
现在,我有一个像这样的SQL查询:
SELECT X, Y FROM POINTS
Run Code Online (Sandbox Code Playgroud)
它返回结果如下:
X Y
----------
12 3
15 2
18 12
20 29
Run Code Online (Sandbox Code Playgroud)
我想在一行中返回结果,如下所示(适合在HTML <AREA>标记中使用):
XYLIST
----------
12,3,15,2,18,12,20,29
Run Code Online (Sandbox Code Playgroud)
有没有办法只使用SQL?
我的数据看起来像
Run Code Online (Sandbox Code Playgroud)CUSTOMER, CUSTOMER_ID, PRODUCT ABC INC 1 XYX ABC INC 1 ZZZ DEF CO 2 XYX DEF CO 2 ZZZ DEF CO 2 WWW GHI LLC 3 ZYX
我想写一个查询,使数据看起来像这样:
Run Code Online (Sandbox Code Playgroud)CUSTOMER, CUSTOMER_ID, PRODUCTS ABC INC 1 XYX, ZZZ DEF CO 2 XYX, ZZZ, WWW GHI LLC 3 ZYX
如果有帮助,请使用Oracle 10g.我看到了一些可以使用MYSQL工作的东西,但我需要一个简单的SQL或ORACLE等价物.我也看过可以制作的存储过程的例子,但是,我不能使用我正在使用的产品的存储过程.
如果我使用它,它在MySQL中是如何工作的
SELECT CUSTOMER,
CUSTOMER_ID,
GROUP_CONCAT( PRODUCT )
FROM MAGIC_TABLE
GROUP BY CUSTOMER, CUSTOMER_ID
Run Code Online (Sandbox Code Playgroud)
谢谢.
我正在尝试将单列VARCHAR圆形查询转换为命令分隔的值列表.
这与此问题完全相同,但对于Oracle而不是SQL Server或MySQL.
我希望从Oracle中返回多行的查询返回带有逗号分隔值的单行,基本上将返回的行展平为单行.
在PostgreSQL中,这可以使用数组和array_to_string函数来实现,如下所示:
鉴于表"人":
id | name
---------
1 | bob
2 | alice
3 | jon
Run Code Online (Sandbox Code Playgroud)
SQL:
select array_to_string(array(select name from people), ',') as names;
Run Code Online (Sandbox Code Playgroud)
将返回:
names
-------------
bob,alice,jon
Run Code Online (Sandbox Code Playgroud)
如何在Oracle 9i中实现相同的结果?
谢谢,
马特
如何在不创建函数的情况下从SQL中的返回行列表生成逗号分隔值?需要删除重复项并使用null或使用"无"作为值.
例: select name from student;
结果 :
NAME
------
Zed
Charlo
None
Charlo
Dionn
Ansay
Run Code Online (Sandbox Code Playgroud)
期望的输出:
Name
-------
Zed,Charlo,Dionn,Ansay
Run Code Online (Sandbox Code Playgroud) 我有以下参考数据.
PERSON_NAME STREET TOWN COUNTY POSTCODE
------------------------------ ------------------------ ---------------- ---------------- ----------
David Smith 30 Johnson Street Norwich Norfolk NA38 3KL
John Brown Douglas Road Cambridge C8 9IJ
Jackie White 8 High Street Ipswich Suffolk IP7 2YT
Andrea Blue 9 Marlborough Ave Bury Suffolk IP4 0XC
Jemima Green Riverside Walk Colchester Essex CO6 7PR
James Gray 167 Hadleigh Place London SW1 4TU
Run Code Online (Sandbox Code Playgroud)
我想要做的是显示一个人名列表,以及他们的地址连接成一个逗号分隔的字符串.
这部分很简单,我用了||连接列并放置逗号分隔符.
我正在质疑的部分是,有些行没有列出任何内容COUNTY,因此我需要避免显示, ,.
我已经为自己做了一些研究,并决定使用Oracle中的SUBSTR替换双逗号,但它确实感觉有点"脏".是否有更简洁的方法来避免使用复杂的功能(例如之前的SO问题)?
这就是我所拥有的:
SELECT
SUPPNAME as …Run Code Online (Sandbox Code Playgroud) 有人可以告诉我如何实现以下目标吗?
表:
efforts_id cycle_name release_name
123 quarter march
123 half april
123 full april
124 quarter may
Run Code Online (Sandbox Code Playgroud)
我的预期产量:
efforts_id cycle_name release_name
123 quarter,half,full march,april
124 quarter may
Run Code Online (Sandbox Code Playgroud)
我是oracle的初学者所以不确定如何做到这一点.任何帮助,将不胜感激.
谢谢
我有一张名为"人"的桌子.它包含person的id和它的父id(只有一个父级是可能的).作为查询的结果,我想要一个包含第一列的表 - 一个人ID,第二列 - 一个包含它的子ID的列表.怎么做到这一点?我已经阅读过listagg函数,但我不确定它是否适合我的目的.此查询生成一个空的第二列:
从人t1中选择t1.id,(从人t2中选择t2.id,其中t2.parent_id = t1.id),其中t1.status ='parent';
我有
'VA - HRD 1, VA - HRD 1, VA - NOVA 1, VA - NOVA 1'
Run Code Online (Sandbox Code Playgroud)
并希望得到
'VA - HRD 1, VA - NOVA 1'
Run Code Online (Sandbox Code Playgroud)
我在尝试
regexp_replace( 'VA - HRD 1, VA - HRD 1, VA - NOVA 1, VA - NOVA 1' ,'([^,]+)(,\1)+', '\1')
Run Code Online (Sandbox Code Playgroud)
但它不会删除所有重复项,它会产生: VA - HRD 1, VA - HRD 1, VA - NOVA 1
请帮忙...
我正在尝试从Oracle中的字段构建以逗号分隔的值列表.
我找到了一些示例代码:
DECLARE @List VARCHAR(5000)
SELECT @List = COALESCE(@List + ', ' + Display, Display)
FROM TestTable
Order By Display
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试时,我总是得到关于FROM关键字的错误,而不是它是预期的.我可以使用SELECT INTO并且它可以工作,但如果我有多行,我会得到提取错误.
为什么我不能这样做:
SELECT myVar = Field1
FROM myTable
Run Code Online (Sandbox Code Playgroud) 说你有
select '9|2|6|7|5' as somedata from dual
Run Code Online (Sandbox Code Playgroud)
有没有办法,我可以做以下事情:
select
in_string_sort('|', a.somedata)
from
(select '9|2|6|7|5' as somedata from dual) a
Run Code Online (Sandbox Code Playgroud)
结果会是'2|5|6|7|9'什么?
我知道,我可以使用一个函数来实现它,但这是如此基本我想知道Oracle是否会为这类事情提供一些内置函数.
[编辑]忘记提及:这将在Oracle 10gR2中.