我的投入是这样的.
col1 col2
1 a
1 b
2 c
2 d
2 e
Run Code Online (Sandbox Code Playgroud)
O/p:应该是这样的
col1 col2
1 a,b
2 c,d,e
Run Code Online (Sandbox Code Playgroud)
我想要一个可以在DB级别触发的查询.我尝试了各种各样的方法,但未能做到这一点......
可能重复:
如何在Oracle中以A,B格式检索两列数据
假设我有一个这样的表:
NAME GROUP_NAME
name1 groupA
name2 groupB
name5 groupC
name4 groupA
name3 groupC
Run Code Online (Sandbox Code Playgroud)
我想得到这样的结果:
GROUP_NAME NAMES
groupA name1,name4
groupB name2
groupC name3,name5
Run Code Online (Sandbox Code Playgroud)
如果表中只有一列,我可以通过执行以下操作来连接记录,但是在上下文中进行分组时,我真的没有太多想法.
连接一个列表:
SELECT names
FROM (SELECT SYS_CONNECT_BY_PATH(names,' ') names, level
FROM name_table
START WITH names = (SELECT names FROM name_table WHERE rownum = 1)
CONNECT BY PRIOR names < names
ORDER BY level DESC)
WHERE rownum = 1
Run Code Online (Sandbox Code Playgroud)
我现在有一个解决方案LISTAGG:
SELECT
group_name,
LISTAGG(name, ', ')
WITHIN GROUP (ORDER BY GROUP) "names"
FROM name_table
GROUP …Run Code Online (Sandbox Code Playgroud) 我在Oracle数据库中有一个表,它有40列.我知道如果我想按查询进行分组,则select中的所有列必须在group by中.
我只是想做:
select col1, col2, col3, col4, col5 from table group by col3
Run Code Online (Sandbox Code Playgroud)
如果我尝试:
select col1, col2, col3, col4, col5 from table group by col1, col2, col3, col4, col5
Run Code Online (Sandbox Code Playgroud)
它没有提供所需的输出.
我搜索了这个,但没有找到任何解决方案.我使用某种Add()或count(*)函数找到的所有查询.
在Oracle中,不可能简单地按一列分组?
更新:
我道歉,因为不够清楚.
我的表:
+--------+----------+-------------+-------+
| id | col1 | col2 | col3 |
+--------+----------+-------------+-------+
| 1 | 1 | some text 1 | 100 |
| 2 | 1 | some text 1 | 200 |
| 3 | 2 | some text …Run Code Online (Sandbox Code Playgroud) 我正在尝试从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)