MSSQL数据库中两行数据合并的技巧(mssql 两行合并)

2023-04-21 09:24:33 合并 数据库中 两行

MSSQL是一种强大的关系型数据库管理系统,它支持将多行数据合并到一行中,这也就是所谓的列驱动的记录集,使数据归档更加方便实现。今天,我们就来介绍如何在MSSQL数据库中将两行数据合并到一行。

首先,准备好我们用于测试的数据集。假设有一张表,包含4个字段:ID,Name,Value1和Value2,假设Value1和Value2分别包含2个值。

这里我们可以使用UNION ALL语句将两行数据合并成一行,并使用CASE语句对Value1和Value2取出合并后的值。具体实现代码如下:

“`SQL

SELECT ID,Name,

CASE

WHEN Value1 IS NOT NULL THEN Value1

WHEN Value2 IS NOT NULL THEN Value2

END AS Value

FROM Table

UNION ALL

SELECT ID,Name,

CASE

WHEN Value2 IS NOT NULL THEN Value2

WHEN Value1 IS NOT NULL THEN Value1

END AS Value

FROM Table


如上代码所示,我们可以把两行数据合并成一行,并使用CASE语句对Value1和Value2取出合并后的值。

另一种实现方法是使用 while 循环 和 UNION 语句将两行数据合并到一行中,具体实现代码如下:

```SQL
DECLARE @Val NVARCHAR(128), @Val1 NVARCHAR(128), @Val2 NVARCHAR(128)
DECLARE @ValTblOri TABLE (Val NVARCHAR(128))
INSERT INTO @ValTblOri SELECT Value1 FROM Table UNION ALL SELECT Value2 FROM Table
WHILE (SELECT COUNT(*) FROM @ValTblOri) > 0
BEGIN
SELECT TOP 1 @Val = Val FROM @ValTblOri
SET @Val1 = CASE WHEN @Val1 IS NULL THEN @Val ELSE @Val1 + ',' + @Val END
SET @Val2 = CASE WHEN @Val2 IS NULL THEN @Val ELSE @Val2 + ',' + @Val END
DELETE FROM @ValTblOri WHERE Val = @Val
END

SELECT ID,Name, @Val1 AS Value1, @Val2 AS Value2
FROM Table
GROUP BY ID,Name

以上就是如何在MSSQL数据库中将两行数据合并成一行的技巧。当我们处理许多不同的数据集时,这种方式可以节省许多时间。

相关文章