如何用SQL Server把列组合成一个新的列?
在大多数情况下,将多个列组合成单个计算列或新列是执行数据分析和数据报告的必要步骤。在 SQL Server 数据库中,可以通过使用运算符、函数或表达式将多个列组合成新的列。在本文中,我们将讨论如何使用 SQL Server 将列合并为一个新列。
1.使用运算符合并列
运算符可用于连接字符串和将数字行列分别相加。在 SQL Server 中,连接字符串的操作符为“+”,数值求和的操作符为“+”。示例如下:
SELECT FirstName + ' ' + LastName AS FullName,
SalesYTD + Bonus As TotalCompensation
FROM Sales.SalesPerson;
在上面的示例中,我们从 Sales.SalesPerson 表中选择 FirstName 和 LastName 列,并使用“+”运算符将它们连接成 FullName 列。同时,我们也从 SalesYTD 和 Bonus 列中选择,使用同样的“+”运算符将它们的值相加,并将结果存储在 TotalCompensation 列中。
2.使用 CONCAT() 函数合并列
CONCAT() 函数用于连接两个或更多字符串。它需要至少两个字符串参数,最多可以有 254 个字符串参数。该函数将忽略 NULL 值。示例如下:
SELECT CONCAT(FirstName, ' ', LastName) AS FullName
FROM Sales.SalesPerson
在上面的示例中,我们选择了 FirstName 和 LastName 列,并使用 CONCAT() 函数将它们连接成 FullName 列。
3.使用 CASE 表达式合并列
CASE 表达式可用于根据特定条件动态生成值。可以在 SELECT 语句中使用 CASE 表达式,以根据多个条件生成新列。示例如下:
SELECT FirstName, LastName,
CASE
WHEN SalesYTD > 2000000 THEN 'High Performer'
WHEN SalesYTD > 1000000 THEN 'Average Performer'
ELSE 'Low Performer'
END AS SalesPerformance
FROM Sales.SalesPerson
在上面的示例中,我们选择 FirstName 和 LastName 列,并使用 CASE 表达式根据 SalesYTD 列的值确定销售绩效等级,并将结果存储在 SalesPerformance 列中。
4.使用 + 运算符和 CAST() 函数合并列
在某些情况下,可能需要将两个或更多列的值合并为一个数值列。此时,可以使用 + 运算符和 CAST() 函数。示例如下:
SELECT SalesYTD + CAST(Bonus AS decimal(7,2)) AS TotalCompensation
FROM Sales.SalesPerson
在上面的示例中,我们选择了 SalesYTD 和 Bonus 列,并使用 + 运算符和 CAST() 函数将它们的值合并成 TotalCompensation 列。
总结
在 SQL Server 中,可以使用运算符、函数、表达式或 CASE 表达式将多个列组合成新列。上述示例只是一些常见的方法。我们需要根据具体的情况选择合适的方法将列合并成一个新的列。