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

T-SQL组行成列

洪飞扬
2023-03-14
问题内容

如何将(未知)行数分组为由设置的列确定分组的单行?

例如,换档

Ref      Name            Link
==============================
1        John            L1
1        John            L2
1        John            L8
2        Steve           L1
2        Steve           L234

进入

Ref      Name            ...    ...    ...
==========================================
1        John            L1     L2     L8
2        Steve           L1     L234   NULL

谢谢你的帮助


问题答案:

您可以使用row_number()作为列名称的源来透视表:

select *
from
(
  select ref, 
         name, 
         link,
         row_number() over (partition by ref, name order by link) rn
  from table1
) s
pivot (min (link) for rn in ([1], [2], [3], [4])) pvt

如果您有更多的行,只需扩展数字列表即可。

实时测试是@Sql Fiddle。



 类似资料:
  • 问题内容: 我正在尝试将一些数据汇总为一个报告,并且需要连接表之一的行值。这是基本的表结构: 评论 审稿人 用户数 这是M:M关系。每个审阅可以有许多审阅者;每个用户可以与许多评论相关联。 基本上,我要查看的是Reviews.ReviewID,Reviews.ReviewDate和该评论的所有关联用户的FName的串联字符串(以逗号分隔)。 代替: 显示此: 我发现这个文章描述了一些方法可以做到这

  • 问题内容: 我有下表 我需要编写一个查询,该查询将返回不同的ID和对应的Number列值相乘。对于给定的表结果应该是这样的 (不使用游标) 问题答案: 这将适用于正数,也可以乘以负数,也可以使用ABS()函数使用绝对(正)值,但最终结果将是正数,而不是负数: 编辑:添加了测试脚本 输出:

  • 问题内容: 我想在日期基础上更新一行。问题是,由于我的错误,我有两行相同的数据。如何仅在一行上运行更新? 问题答案: 表通常具有唯一的ID。您应该对此进行过滤。 例如, 如果您的表没有唯一的ID,请考虑添加一个:带有和的列。

  • 问题内容: 我该如何选择: 请不要告诉我可以使用,因为它们实际上来自查询。 问题答案: 没有合并和语法,但是您可以使用,如下所示。 或在评论中使用您的示例

  • MS SQL 有许多用于处理数字数据或字符串的内置函数。下面给出的列表包含有用的 SQL 内置函数: SQL Server COUNT 函数 - SQL Server COUNT 聚合函数用于计算数据库表中的行数。 SQL Server Max 函数 - SQL 中的 Max Aggregate 函数允许我们选择列的最大值。 SQL Server Min 函数 - SQL 中的 Min Aggre

  • 主要内容:CREATE INDEX命令,删除索引命令索引是数据库搜索引擎用来加速数据检索的唯一表格。索引是表中数据的一种指标。数据库中的索引与书末的索引相同。 例如,如果想参考书中讨论某个主题的所有页面,首先参考索引,索引一般是按字母顺序列出所有问题,然后应用于一个或多个页码。 索引选择可以帮助我们加快 where 子句出现时的查询速度,但它会减慢数据输入速度,并且包含更新和语句。不会对索引数据产生或删除任何影响。 创建索引包括一个 语句,该语句为