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

从TSQL视图中的数据行执行字符串连接(数据透视?)

钱安和
2023-03-14
问题内容

我想在SQL Server中创建一个视图,该视图结合了几部分数据库元数据。

我想要的一个元数据保存在sys.syscomments表中-relevent列如下:

id   colid  text
---- ------ -------------
1001 1       A comment.
1002 1       This is a lo
1002 2       ng comment.
1003 1       This is an e
1003 2       ven longer c
1003 3       omment!

如您所见,如果“文本”列中的数据超过最大长度(SQL Server中为8000字节/
4000个字符,在我的示例中为12个字符),则该数据将分成多行。colid标识将文本重新组合在一起的顺序。

我想在我的视图中进行查询/子查询,以重新组合sys.syscomments表中的注释,以便:

id   comment (nvarchar(max))
---- ----------------------------------
1001 A comment.
1002 This is a long comment.
1003 This is an even longer comment!

有什么建议或解决方案吗?速度并不是至关重要的,但简单性和低影响是至关重要的(我想避免CLR函数之类的东西-
理想情况下,整个过程都应封装在视图定义中)。我研究了一些基于XML的建议,但结果产生了填充有XML转义字符串的文本。


问题答案:
SELECT  id,
        (
        SELECT  text AS [text()]
        FROM    mytable mi
        WHERE   mi.id = md.id
        ORDER BY
                mi.col
        FOR XML PATH(''), TYPE
        ).value('/', 'NVARCHAR(MAX)')
FROM    (
        SELECT  DISTINCT id
        FROM    mytable
        ) md


 类似资料:
  • 问题内容: 我有一个像这样的简单数据框: 我需要按日期进行调整: 一切正常。但是现在我需要对其进行透视,并获得一个非数字列: 当然,我会得到一个例外: 我想产生一些东西 有可能吗? 问题答案: 假设组合是唯一的,并且您的唯一目标是枢纽而不是合计,则可以使用(或任何其他不限于数值的函数): 如果这些假设不正确,则必须预先汇总数据。例如,对于最常见的值:

  • A 数据透视表介绍 B.1 什么是数据透视表? 数据透视表是一种可以快速汇总、分析大量数据表格的交互式工具。使用数据透视表可以按照数据表格的不同字段从多个角度进行透视,并建立交叉表格,用以查看数据表格不同层面的汇总信息、分析结果以及摘要数据。使用数据透视表可以深入分析数值数据,以帮助用户发现关键数据,并做出有关企业中关键数据的决策。 数据透视表是针对以下用途特别设计的:以友好的方式,查看大量的数据

  • 问题内容: 我正在考虑让最终用户能够将“部分视图”(控件)放入存储在数据库中的信息中。有没有一种方法可以执行我从数据库获取的作为Razor视图的一部分的字符串? 问题答案: 更新(我全都忘了) 我之前曾问过这个问题(这使我创建了RazorEngine)是从数据库而不是从文件中提取视图 我至少知道两个:RazorEngine,MvcMailer 我对RazorEngine有偏见,因为我一直在努力,但

  • 问题内容: 我正在努力寻找解决此MySQL问题的方法。我似乎无法理解该怎么做。我有下表。 如果可能的话,我想将问题答案显示为每个结果集的列,如下所示。 任何帮助将非常感激。 谢谢 问题答案: SQLFiddle演示 如果您不清楚问题的数量( 例如Matei Mihai所说的1000个 ),则非常需要动态版本。 SQLFiddle演示 输出值

  • 我已经用SQL Server Management Studio创建了一个数据库,现在我想在我的C#应用程序中使用它。我需要连接字符串? 如何发布数据库,以便Visual Studio可以获取它?然后我就可以拉出那里的连接字符串了?

  • 问题内容: 我需要知道,如果没有聚合函数要使用,MS SQL中的“数据透视”是否可以用于将行转换为列。我看到了很多仅带有聚合函数的示例。我的字段是字符串数据类型,我需要将此行数据转换为列数据。这就是为什么我写这个问题。我只是用’case’做到了。谁能帮我......提前感谢。 问题答案: 您可以使用PIVOT执行此操作。在执行PIVOT时,可以使用以下两种方法之一进行操作:使用“静态数据透视表”(