drop table emp;
CREATE TABLE emp (
emp_id INT,
emp_name VARCHAR(50),
emp_salary_grade VARCHAR,
emp_department VARCHAR(50)
);
INSERT INTO emp VALUES (1, 'Alice', 1, 'Human Resources');
INSERT INTO emp VALUES (2, 'Bob', 2, 'Sales');
INSERT INTO emp VALUES (3, 'Charlie', 3, 'Marketing');
commit;
SELECT emp_id, emp_attribute, emp_value
FROM emp
UNPIVOT (
emp_id FOR emp_attribute IN (emp_name, emp_salary_grade, emp_department)
);
语句报错如下图。
在这个查询中,UNPIVOT 子句的语法有误。在 UNPIVOT
子句中,应该指定要转换的列以及它们的值,而不是将 emp_id 作为值。正确的语法应该是将要转换的列指定为值,并为其提供一个标识符。
下面是修正后的查询:
SELECT emp_id, emp_attribute, emp_value
FROM emp
UNPIVOT (
emp_value FOR emp_attribute IN (emp_name, emp_salary_grade, emp_department)
);
在这个改正后的查询中,emp_value
是要转换的列,而 emp_attribute
是该列的标识符,它会在输出中用于表示列名。
文章
阅读量
获赞