Sql Server 行连接

Posted

技术标签:

【中文标题】Sql Server 行连接【英文标题】:Sql Server Row Concatenation 【发布时间】:2009-07-02 16:16:35 【问题描述】:

我有一个表格(实际上是表格变量),其中包含数千行(大约 50k)行:

group (int)  isok (bit)    x    y
20           0             1    1
20           1             2    1
20           1             3    1
20           0             1    2
20           0             2    1
21           1             1    1
21           0             2    1
21           1             3    1
21           0             1    2
21           1             2    2

将其拉回客户端是一项相当艰巨的任务(特别是因为 isok 有点)。我想做的是将其转换为以下形式:

group        mask
20           01100
21           10101

而且可能会更进一步,将其编码为长等。

注意:当前存储数据的方式无法更改。

在 SQL Server 2005 中是否可能出现这种情况,如果可能的话,甚至在 2000 中(非常重要)?

编辑:我忘了说清楚原始表已经处于需要维护的隐式排序中,没有一列充当线性序列,而是排序是基于上述其他两列(整数)(x & y)

【问题讨论】:

是否有一列对位进行排序?因为没有一个就不能保证您的订单,如果订单很重要,您的口罩将失效。 很抱歉应该说清楚并将编辑 - 该表是为了开始,但目前没有列具有简单的线性序列。 没有“按顺序”的表,这是 SQL,而不是某些 ISAM 文件。您必须有一个订单列。期间。 【参考方案1】:

您可以将位视为字符串('0'、'1')并部署此处描述的众多字符串聚合连接方法之一:http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/

【讨论】:

即使每个组有数千行,这也能工作吗?谢谢。 是的,这就是优势。如果每组最多有 64 个,您可以使用 bigint 位运算,但除此之外,您必须使用字符串或 varbinary。但是你需要一个订单列。

以上是关于Sql Server 行连接的主要内容,如果未能解决你的问题,请参考以下文章

sql server 表连接

minisipserver为啥连接不稳定

将多行连接成单行并计算 SQL Server 中连接的行数

在远程服务器上的sql server2008连接不上

使用 RANK 或 ROW_NUMBER 创建 Group-able ID 以在 SQL Server 中使用难以捉摸的顺序交替连接行值

Oracle GoldenGate for Sql Server连接ODBC失败的处理方法