标签: string-aggregation

SQL Rows基于单列进行连接

我有值的表

X     Y     Z  
-     ---   - 
1     abc   P
1     def   Q
Run Code Online (Sandbox Code Playgroud)

我需要一个普通的查询(不是pl/sql),它可以给出结果

X  Y        Z
-  -------  ---
1  abc,def  P,Q
Run Code Online (Sandbox Code Playgroud)

即,基于列X,值被转换为csv格式

可以有三列以上.

sql oracle string-aggregation

1
推荐指数
1
解决办法
2985
查看次数

在SQL Server的列中输出以逗号分隔的列表

可能重复:
在SQL Server 2005中模拟group_concat MySQL函数?

实现这一目标的最佳方法是什么?编辑:在MSSQL 2005中

a   |  b
------------
x   |  1
x   |  4
y   |  6
y   |  1
Run Code Online (Sandbox Code Playgroud)

查询:

SELECT ? FROM Table
Run Code Online (Sandbox Code Playgroud)

所以输出是:

a   | ListOfB
------------
x   | 1, 4
y   | 6, 1
Run Code Online (Sandbox Code Playgroud)

sql-server csv string-aggregation

1
推荐指数
1
解决办法
3617
查看次数

Oracle字符串聚合

我的表结构看起来像这样,我是这个领域的新手.我知道基本的问题.但这对我来说很复杂.请帮我这样做.

表结构

  Customer          Product         piriority
    10001           Main_product    1
    10001           Sub_product1    2
    10001           Sub_product2    2
    10001           Sub_product3    2
    10001           Sub_product4    2
    10002           Main_product    1
    10002           Sub_product1    2
    10002           Sub_product2    2
Run Code Online (Sandbox Code Playgroud)

预期产出:

Customer        Main_Product    Sub_product
10001           Main_product    Sub_product1,Sub_product2,Sub_product3,Sub_product4
10002           Main_product    Sub_product1,Sub_product2
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle11g string-aggregation

1
推荐指数
1
解决办法
1709
查看次数

string_agg:两个以上属性串联

我正在使用postgresql 9.0 我想知道是否可以将三个属性连接在一起。

这就是我连接两个属性(书本和逗号)的方式:

SELECT string_agg(book, ',') FROM authors where id = 1;


| book1,book2,book3|
--------------------
Run Code Online (Sandbox Code Playgroud)

我怎样才能做如下的事情:

SELECT string_agg(name, ':', book, ',') FROM authors where id = 1;

| Ahmad: book1,book2,book3|
  ----------------
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?谢谢。

postgresql string-aggregation

1
推荐指数
1
解决办法
1828
查看次数

如何在Oracle的同一单元格中获取多个值

我在Oracle中有一个表,其中有两列。在第一列中,有时会有重复的值对应于第二列中的其他值。如何编写仅显示第一列的唯一值和第二列的所有可能值的查询?

该表如下所示

COLUMN_1   |   COLUMN_2

NUMBER_1   |       4
NUMBER_2   |       4 
NUMBER_3   |       1
NUMBER_3   |       6
NUMBER_4   |       3
NUMBER_4   |       4
NUMBER_4   |       5
NUMBER_4   |       6
Run Code Online (Sandbox Code Playgroud)

oracle string-aggregation

1
推荐指数
1
解决办法
507
查看次数

表中所有行的逗号分隔值

我有一个包含三列的服务表。

服务

sr_id lang alias
1     EN    A
1     PA    B
1     HI    C
2     EN    D
2     HI    E
Run Code Online (Sandbox Code Playgroud)

现在,我想输出每个服务 id、lang 和别名列,这些列将是服务别名的串联。

示例输出 -

SR_ID   lang   alias
1       EN     A,B,C
1       PA     A,B,C
1       HI     A,B,C
2       EN     D,E
2       HI     D,E
Run Code Online (Sandbox Code Playgroud)

我如何使用 PostgreSQL 9.4 做到这一点?

sql postgresql string-aggregation postgresql-9.4

1
推荐指数
1
解决办法
3947
查看次数

postgresql 字符串 agg 数字/整数输出结果错误

正如标题所说,我需要使用此查询(无字符串 Agg)将结果查询与字符串 agg 连接起来

select pdet.dept_id, pdet.grade_id
from psa_aso_target ptar
inner join psa_aso_targetdetails pdet on pdet.target_id=ptar.target_id and ptar.branch_id='18'
Run Code Online (Sandbox Code Playgroud)

结果是这样的

结果

然后我添加字符串 agg

select pdet.dept_id, string_agg(distinct pdet.grade_id::char,'|') as grade
from psa_aso_target ptar
inner join psa_aso_targetdetails pdet on pdet.target_id=ptar.target_id and ptar.branch_id='18'
group by pdet.dept_id
Run Code Online (Sandbox Code Playgroud)

我希望结果结果是

dept_id | grade_id
      2 | 1|2|3
      3 | 4|13|14|15|18
      5 | 6|10|17
     63 | 2|4|7
Run Code Online (Sandbox Code Playgroud)

但我得到的结果是

dept_id | grade_id
      2 | 1|2|3
      3 | 1|4
      5 | 1|6
     63 | 2|4|7
Run Code Online (Sandbox Code Playgroud)

任何的想法?

sql postgresql string-aggregation

1
推荐指数
1
解决办法
4585
查看次数

如何使用 STRING_AGG() 获取以逗号分隔的升序字符串

我的桌子看起来像这样

Color  Order 
------------
Red    49
Blue   32
Green  80
Green  30
Blue   93
Blue   77
Red    20
Green  54
Red    59
Red    42
Red    81
Green  35
Blue   91
Run Code Online (Sandbox Code Playgroud)

我的查询是

SELECT Color, Count(*) AS Count, STRING_AGG(Order,',') AS AggOrder
FROM MyTable
GROUP BY Color
Run Code Online (Sandbox Code Playgroud)

当我按颜色分组并聚合时,我得到未排序的订单

像这样的东西

Color  Count  AggOrder
------------------------------
Red    5      49,20,59,42,81
Blue   4      32,93,77,91
Green  4      80,30,54,35
Run Code Online (Sandbox Code Playgroud)

问题:AggOrder 无序 49,20,59,42,81

我想订购

所以最终结果是

Color  Count  AggOrder
------------------------------
Red    5      20,42,49,59,81
Blue   4      32,77,91,93
Green  4      30,35,54,80
Run Code Online (Sandbox Code Playgroud)

我尝试了这个查询

SELECT Color, …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server string-aggregation string-agg

1
推荐指数
1
解决办法
2768
查看次数

连接 SQL 列并用逗号分隔

有没有其他方法可以连接 SQL 列并用逗号分隔。我使用以下逻辑进行串联。列 (col1,col2,col3) 可以具有值。

select 
stuff(
        left(concat(col1,',',col2,',',col3),
            len(concat(col1,',',col2,',',col3)) -
        patindex('%[^,]%',reverse(concat(col1,',',col2,',',col3)))+1
            )
        ,1,
        patindex('%[^,]%',concat(col1,',',col2,',',col3))-1,''
    )
from mytable
Run Code Online (Sandbox Code Playgroud)
  • 样本数据/输出

在此输入图像描述

sql t-sql sql-server string-aggregation stuff

1
推荐指数
1
解决办法
1万
查看次数

提高这个string_agg的速度?

我有以下形状的数据:

BOM -- 500 rows, 4 cols
PartProject -- 2.6mm rows, 4 cols
Project -- 1000 rows, 5 cols
Part -- 200k rows, 18 cols
Run Code Online (Sandbox Code Playgroud)

然而,当我尝试这样做时string_agg,我的代码将花费 10 多分钟才能在 500 行上执行。我该如何改进这个查询(数据不可用)。

select
    BOM.*,
    childParentPartProjectName
into #tt2 -- tt for some testing
from #tt1 AS BOM -- tt for some testing
-- cross applys for string agg many to one
CROSS APPLY (
    SELECT childParentPartProjectName = STRING_AGG(PROJECT_childParentPart.NAME, ', ') WITHIN GROUP (ORDER BY PROJECT_childParentPart.NAME)
    FROM (
        SELECT DISTINCT PROJECT3.NAME
    FROM …
Run Code Online (Sandbox Code Playgroud)

sql sql-server string-aggregation

1
推荐指数
1
解决办法
2083
查看次数