当前位置: 首页 > 面试题库 >

如何串联多行?

孟昆
2023-03-14
问题内容

我有以下查询,该查询返回所有员工的薪水。这项工作正常,但我需要收集将汇总到一个单元格中的额外数据(请参见结果集2)。

如何将数据汇总到逗号分隔的列表中?有点像Sum所做的事情,但是我需要一个字符串作为回报。

SELECT Employee.Id, SUM(Pay) as Salary
FROM Employee
INNER JOIN PayCheck ON PayCheck.EmployeeId = Employee.Id
GROUP BY Employee.Id

结果集1

Employee.Id              Salary
-----------------------------------
          1                 150
          2                 250
          3                 350

我需要:

结果集2

Employee.Id              Salary                 Data
----------------------------------------------------
          1                 150      One, Two, Three
          2                 250      Four, Five, Six
          3                 350      Seven

问题答案:

对于SQL Server 2005+,请使用STUFF函数和FOR XML PATH:

WITH summary_cte AS (
   SELECT Employee.Id, SUM(Pay) as Salary
     FROM Employee
     JOIN PayCheck ON PayCheck.EmployeeId = Employee.Id
 GROUP BY Employee.Id)
SELECT sc.id, 
       sc.salary,
       STUFF((SELECT ','+ yt.data
                FROM your_table yt
               WHERE yt.id = sc.id
            GROUP BY yt.data
             FOR XML PATH(''), TYPE).value('.','VARCHAR(max)'), 1, 1, '')
  FROM summary_cte sc

但是您缺少有关要转换为逗号分隔的字符串的数据的位置及其与员工记录的关系的详细信息…



 类似资料:
  • 如何在不打印的情况下将stringList中的所有字符串连接成一个字符串? 例如,

  • 问题内容: 如何使用SQL将多行连接成一行?我的数据库是DB2 我想要类似的东西 问题答案: 试试这个 这里演示SQLFIDDLE 编辑:在db2中,您需要创建函数,然后调用它 然后在这里叫

  • 问题内容: 在将根据循环被重复。如何将结果另存为新字符串。例如,如果工作“ hello”重复了两次,我现在将如何创建“ hellohello”作为一个全新的字符串。 问题答案:

  • 问题内容: 我正在寻找一种在多行Python字符串中使用变量的干净方法。假设我想执行以下操作: 我正在寻找是否有与Perl中类似的东西来指示Python语法中的变量。 如果不是-用变量创建多行字符串的最干净方法是什么? 问题答案: 常用的方法是函数: 它可以与多行格式字符串一起正常工作: 您还可以传递带有变量的字典: 在语法上,最接近您要求的是模板字符串。例如: 我应该补充一点,尽管该功能更为常见

  • 问题内容: 我有一个PHP for循环: 我试图实现的是使用for循环变量,并将其附加到另一个变量的名称中。 基本上,我希望每行的PHP输出如下 我已经尝试过,但是失败了。 我该如何实现?我是否缺少明显的东西? 问题答案: 变量变量的正确语法是: 但是,我 强烈不鼓励 这样做。您试图完成的任务很可能可以通过使用arrays来解决。用法示例:

  • 问题内容: 我将SET1声明为静态String [],我想将SET2声明为SET1 +其他一些参数。是否可以声明SET2与SET1静态相似(即私有静态String []),但使用上面的定义,如果不这样做的话? 问题答案: 查看Commons Util ArrayUtils.add: