- 将结果集合并为一行
在SQL中,我们可以结合使用GROUP_CONCAT()和GROUP BY语句,将多行结果合并为一行。
以以下表格为例:
SELECT *
FROM employees;
emp_id | name | department | salary |
---|---|---|---|
1 | Alice | Sales | 50000 |
2 | Bob | Marketing | 60000 |
3 | Claire | Sales | 55000 |
4 | Dave | Marketing | 65000 |
我们可以使用以下SQL语句将部门和对应的工资合并在一行:
SELECT department, GROUP_CONCAT(salary)
FROM employees
GROUP BY department;
结果集将被变换为:
department | GROUP_CONCAT(salary) |
---|---|
Sales | 50000,55000 |
Marketing | 60000,65000 |
- 将一列结果变成一行
我们可以通过使用CASE语句在SELECT语句中,将一列结果变成一行。
以以下表格为例:
SELECT *
FROM customers;
customer_id | name | city | state |
---|---|---|---|
1 | Alice | New York | NY |
2 | Bob | San Diego | CA |
3 | Claire | Chicago | IL |
4 | Dave | Miami | FL |
我们可以使用以下SQL语句将每个客户的州缩成一行:
SELECT
name,
MAX(CASE WHEN state = 'NY' THEN city END) AS 'NY',
MAX(CASE WHEN state = 'CA' THEN city END) AS 'CA',
MAX(CASE WHEN state = 'IL' THEN city END) AS 'IL',
MAX(CASE WHEN state = 'FL' THEN city END) AS 'FL'
FROM customers
GROUP BY name;
结果集将被变换为:
name | NY | CA | IL | FL |
---|---|---|---|---|
Alice | New York | NULL | NULL | NULL |
Bob | NULL | San Diego | NULL | NULL |
Claire | NULL | NULL | Chicago | NULL |
Dave | NULL | NULL | NULL | Miami |
以上是两个常见的SQL变换结果集成一行的攻略示例。我们在实际使用中,可以结合实际需求,灵活使用SQL语句实现结果转换。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SQL 变换结果集成一行 - Python技术站