You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否用SQL视图实现员工薪资行转列?如何操作?

用SQL视图实现员工薪资数据行列转换

原员工表数据

idempidsal_typesalary
42var9000
32fixed5000
21var6000
11fixed10000

期望输出

empidFixedVAR
1100006000
250009000

当然可以用SQL视图实现这个需求,核心是把行列转换的查询逻辑封装成视图即可。以下是两种适配不同数据库的实现方案:

方案1:CASE WHEN + GROUP BY(通用所有SQL数据库)

这种写法兼容性拉满,支持MySQL、PostgreSQL、SQL Server等几乎所有主流数据库:

CREATE VIEW emp_salary_pivot AS
SELECT
    empid,
    MAX(CASE WHEN sal_type = 'fixed' THEN salary END) AS Fixed,
    MAX(CASE WHEN sal_type = 'var' THEN salary END) AS VAR
FROM 员工表名
GROUP BY empid;

方案2:PIVOT语法(适用于SQL Server、Oracle等支持PIVOT的数据库)

如果你的数据库支持PIVOT运算符,可使用更简洁的语法:

CREATE VIEW emp_salary_pivot AS
SELECT empid, Fixed, VAR
FROM (
    SELECT empid, sal_type, salary
    FROM 员工表名
) AS src
PIVOT (
    MAX(salary)
    FOR sal_type IN ([fixed] AS Fixed, [var] AS VAR)
) AS pvt;

创建完成后,直接查询视图就能得到目标结果:

SELECT * FROM emp_salary_pivot;

内容的提问来源于stack exchange,提问作者Nimmi Mimlu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 01:51:10