我目前正在研究Crystal Reports中的一个项目,该项目拒绝使用Oracle 10g中允许的未记录的函数WM_CONCAT.这是WM_CONCAT头信息
WM_CONCAT(p1 IN VARCHAR2) RETURN VARCHAR2
Run Code Online (Sandbox Code Playgroud)
要使用WM_CONCAT,我将它传递给它:WM_CONCAT(column1); 此函数似乎接受varchar2类型的列,并从列返回以逗号分隔的值列表.我目前有这个功能的自定义版本(在我的工作计算机上),但它不是最佳的,缺乏可重用性.任何人都可以提供一个好的,可重复使用的功能,如WM_CONCAT,我可以使用?
我有一张名为"人"的桌子.它包含person的id和它的父id(只有一个父级是可能的).作为查询的结果,我想要一个包含第一列的表 - 一个人ID,第二列 - 一个包含它的子ID的列表.怎么做到这一点?我已经阅读过listagg函数,但我不确定它是否适合我的目的.此查询生成一个空的第二列:
从人t1中选择t1.id,(从人t2中选择t2.id,其中t2.parent_id = t1.id),其中t1.status ='parent';
我试图GROUP_CONCAT在SQL Server 2000中使用该函数,但它返回一个错误:
'group_concat'不是可识别的函数名称"
所以我猜group_concat在SQL Server 2000中还有其他功能吗?你能告诉我它是什么吗?
我目前正在尝试将group_concatMySQL中的函数模拟为MSSQL.我遵循了此处和此处的代码格式.问题是,当我尝试执行查询时,我收到了Ambiguous column name我的列的消息RoleID.这是我的查询:
select UserName, RoleID from tb_UserInRoles
cross apply(
select RoleName from tb_Roles
where tb_UserInRoles.RoleID = tb_Roles.RoleID
for XML Path('')
) fxMerge (RoleID) group by UserName, RoleID
Run Code Online (Sandbox Code Playgroud)
我想知道为什么这种特殊的代码格式会出现Ambiguous column name错误信息.我需要让这个查询工作并理解它.在此先感谢您的帮助.
我计划在多对多关系表中使用它,其中系统的用户可以有多个角色,如下所示:
| User | Role |
|--------|---------|
| JamesP | Maker |
| JamesP | Approver|
| JamesP | Admin |
Run Code Online (Sandbox Code Playgroud)
我希望结果查询是这样的:
| User | Role |
|--------|--------------------------|
| JamesP | Maker, Approver, Admin |
Run Code Online (Sandbox Code Playgroud) 我有一个如下表
| activityName | UserID | deviceID | createdDate |
|------------------------------------------------------------|
| ON | 1 | adddsad |2020-01-09 00:02:59.477 |
| OFF | 1 | adddsad |2020-01-09 00:50:39.857 |
| ON | 2 | bdddsad |2020-01-09 00:51:11.480 |
| OFF | 2 | bdddsad |2020-01-09 00:51:19.450 |
Run Code Online (Sandbox Code Playgroud)
当我STRING_AGG这样使用时,它是准确的并返回所需的结果
SELECT STRING_AGG(activityName + ' - ' + CONVERT(varchar, createdDate), ' | ') AS tag,
deviceID,
UserID
FROM (SELECT tag,
deviceID,
UserID
FROM tbl_DailyLogMaster
WHERE CONVERT(date, createdDate) = CONVERT(date, GETDATE())
GROUP …Run Code Online (Sandbox Code Playgroud) 嗨我在oracle或某些功能中寻找与mysql相同的group_concat功能
如何在 Oracle 中格式化 listagg 的输出以生成输出(单引号中的每个字段)为'student1', 'student2', 'student3'.
我已经浏览了有关 listagg 的文档和其他问题,但找不到太多。
用于连接 Oracle 中多行列值的 SQL 查询
SELECT LISTAGG(student_name,',') WITHIN GROUP (ORDER BY student_name)
from students
Run Code Online (Sandbox Code Playgroud)
谢谢
在选择中,我使用了这样的 array_to_string(示例)
array_to_string(array_agg(tag_name),';') tag_names
Run Code Online (Sandbox Code Playgroud)
我得到了结果字符串,"tag1;tag2;tag3;..."但我想将结果字符串作为"'tag1';'tag2';'tag3';...".
我怎样才能在 Postgres 中做到这一点?
我有这个查询(我正在使用 SQL Server 2019)并且工作正常(将日期和注释合并到一列中)。但是,我正在寻找的结果是首先显示最新日期。\n
我怎样才能从这个查询中实现这一点?
\n\nSELECT ID, \n\n\xe2\x80\x8b(SELECT string_agg(\xe2\x80\x8bconcat(Date, \': \', Notes), CHAR(13) + CHAR(10) + CHAR(13) + CHAR (10)) as Expr1\xe2\x80\x8b\n\n FROM(SELECT DISTINCT nd.Notes, nd.Date\n FROM dbo.ReleaseTrackerNotes AS nd \n INNER JOIN dbo.ReleaseTracker AS ac4 ON ac4.ID = nd.ReleaseTrackerID\n WHERE (ac4.ID = ac.ID)) AS z_1) AS vNotes \n\nFROM dbo.ReleaseTracker AS ac\n\nGROUP BY ID\n\nRun Code Online (Sandbox Code Playgroud)\n\n我已经尝试过 ORDER BY 但不起作用\n这是我的表格:
\n\nCREATE TABLE [dbo].[ReleaseTrackerNotes](\n [ID] [int] IDENTITY(1,1) NOT NULL,\n [ReleaseTrackerID] [int] NULL,\n [AOC_ModelID] [int] NULL,\n [Date] [date] NULL,\n [Notes] …Run Code Online (Sandbox Code Playgroud) 在 Microsoft SQL Server (T-SQL) 中,有一种简洁、优雅且高性能的面向集合的方法可以使用表中多行值的串联来填充 VARCHAR 变量,即:
DECLARE @vals NVARCHAR(MAX)
SELECT @vals = ISNULL(@vals + ',', '')
+ <some_varchar_column>
FROM <some_table>
Run Code Online (Sandbox Code Playgroud)
@vals用逗号分隔的字符串填充some_column所有行中的所有值some_table(例如,“value1,value2,value3,...”)。
我如何以同样优雅的方式(无需编写循环/游标)在 Oracle PL/SQL 中执行类似的操作?