假设我们有以下数据表EmployeeSalary:
EmployeeName | Salary | Year |
---|---|---|
John | 5000 | 2020 |
Jane | 6000 | 2019 |
John | 5500 | 2019 |
Jane | 7000 | 2020 |
John | 6000 | 2018 |
我们想要将该表使用透视转换为以下格式:
EmployeeName | Salary2018 | Salary2019 | Salary2020 |
---|---|---|---|
Jane | 6000 | 7000 | |
John | 6000 | 5500 | 5000 |
我们可以使用以下查询语句来实现:
SELECT EmployeeName, [2018] AS Salary2018, [2019] AS Salary2019, [2020] AS Salary2020 FROM (SELECT EmployeeName, Salary, Year FROM EmployeeSalary) AS SourceTable PIVOT (SUM(Salary) FOR Year IN ([2018], [2019], [2020])) AS PivotTable;
在上面的查询中,我们首先从原始表中选择了EmployeeName、Salary和Year列,并将其作为SourceTable存储在内存中。然后,我们使用PIVOT关键字来对SourceTable使用透视,SUM合计Salary值,将Year用作列标题,并将结果存储在PivotTable中。
最后,我们从PivotTable中选择EmployeeName、Salary2018、Salary2019和Salary2020列,以获取包含透视数据的单个行。
上一篇:编写SQL查询并使用“<=”(或)“between”(或)其他选项获取给定范围的值。
下一篇:编写SQL查询以捕捉2022年至今的数据,并与2021年的同期进行比较,例如2022年1月1日至6月10日与2021年1月1日至6月10日