SQL Server中的冒号分隔列表(类似于LISTAGG)

刮擦

我正在寻找从SQL Server中从以下结果类似的结果中产生一个串联字符串的方法:

Table A                   |     Table B:
                          |   
LOC      Acct    ID       |   ID      SN
ATL      60      1        |   1       100A
ATL      60      2        |   2       300B
DAL      61      3        |   3       600X
DAL      61      4        |   4       500H

结果:

LOC     Acct      SN
ATL     60        100A:300B
DAL     61        600X:500H

我已经研究过使用STUFF函数和本文如何使用SQL查询创建逗号分隔的列表?,但我似乎无法正确解决。

任何帮助,将不胜感激!

编辑:

这是我尝试过的结果,结果是所有SN串联在一起的;我缺少了一些东西:

      SELECT distinct 
       A2.LOC,
       A2.Acct,
       STUFF((SELECT ':'+ b.SN
               FROM TableA a
              JOIN TableB b ON b.ID = a.ID
            GROUP BY a.acct
                    , b.sn
            FOR XML PATH(''), TYPE).value('.','VARCHAR(max)'), 1, 1, '')  SN_List
      FROM TableA a2 



Results:

LOC      Acct       SN
ATL      60         100A:300B:500H:600X
ATL      60         100A:300B:500H:600X
DAL      61         100A:300B:500H:600X
DAL      61         100A:300B:500H:600X
所罗门·鲁兹基(Solomon Rutzky)
  1. 您不需要GROUP BY

  2. 确实需要WHERE在子查询中创建一个条件,以Acct将外部查询的行中的值与要在内部查询中连接的值的子集相关联

  3. 您将需要在外部查询中DISTINCT后面添加,SELECT因为TableA重复了这些值。

  4. 为了提高可读性并减少难以调试的奇怪行为,您不应在子查询中重复使用表别名。如果您从TableA重新选择,而不是使用外部查询的TableA中的行值,请使用类似的名称a2代替相同的a别名。

以下根据您的SqlFiddle起作用(对此答案的注释中指出):

SELECT DISTINCT
  A2.LOC,
  A2.Acct,
       STUFF((SELECT ':'+ b.SN
              FROM TableA a
              INNER JOIN TableB b
                      ON b.ID = a.ID
              WHERE  a.Acct = a2.Acct
            FOR XML PATH(''), TYPE).value('.','VARCHAR(max)'), 1, 1, '') SN_List
 FROM TableA a2 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

类似于SQL Server中的rank()

来自分类Dev

结果类似于SQL Server 2016中的Oracle查询

来自分类Dev

SQL Server查询类似于Excel中的VLOOKUP逻辑

来自分类Dev

类似于sql中的函数

来自分类Dev

在SQL Server中拆分逗号分隔的值(类似php爆炸)

来自分类Dev

在SQL Server中拆分逗号分隔的值(类似php爆炸)

来自分类Dev

类似于 Unicode 查询的 sql server

来自分类Dev

类似于 SQL“LIKE”,但在 PHP 中

来自分类Dev

如何从LINQ中包含的实体中进行选择,并获得类似于SQL Join的平面列表?

来自分类Dev

在 SQL Server 中实现类似于 Oracle 中存在的多树

来自分类Dev

SQL OR的功能类似于AND

来自分类Dev

类似于SQL的过滤

来自分类Dev

如何更新类似于SQL中的%another column%的列

来自分类Dev

在Firebase中查询多个值,类似于IN()SQL功能

来自分类Dev

在SQL查询中获取类似于余额表的金额

来自分类Dev

Arangodb AQL类似于SQL的NOT IN

来自分类Dev

类似于distinct的SQL查询

来自分类Dev

在SQL Server中解析SQL语句以检查语法有效性-类似于Oracle中的dbms_sql.parse

来自分类Dev

在SQL中从逗号分隔列表创建关联

来自分类Dev

检查包含逗号分隔列表中的项目作为 sql server 中的查询结果

来自分类Dev

在SQL中分割冒号分隔的键值

来自分类Dev

在SQL Server中替换逗号分隔的值

来自分类Dev

处理从SQL Server中的逗号分隔列表到表函数返回的空白行

来自分类Dev

类似于SQL函数的WHERE语句

来自分类Dev

现在的MongoDB>类似于SQL的间隔

来自分类Dev

类似于SQL的Elastic Query查询

来自分类Dev

SQl查询以获取类似于图像的输出

来自分类Dev

SQL-类似于Excel sumif

来自分类Dev

类似于'%term%'的SQL,除非不带字母

Related 相关文章

热门标签

归档