如何从 SQL 中的子查询调用外部查询中的连接列?
How to call concatenated column in outer query from subquery in SQL?
在我的子查询结果中,我连接了 first_name 和 last_name。在我的外部查询中,我将子查询称为“temp”。由于我在子查询中连接了列,如何在我的外部查询中调用该连接列?
例如,我将员工姓名放在引号内,我知道这就是为什么将“员工姓名”显示为第 1 列值而不是显示实际员工姓名会给出错误结果的原因。
SQL查询:
Select "Employee Name",
dept_name, Salary,
sum(Salary) OVER (partition by dept_name) as "Total Sal Dept",
avg(Salary) OVER (partition by dept_name) as "Avg Sal / Dept"
FROM (
Select concat(employees.first_name, ", ",employees.last_name) as "Employee Name",
departments.dept_name,
Max(salaries.salary) as "Salary"
FROM departments
JOIN dept_manager ON (departments.dept_no = dept_manager.dept_no)
JOIN salaries ON (dept_manager.emp_no = salaries.emp_no)
JOIN employees ON (salaries.emp_no = employees.emp_no)
Group by employees.first_name, employees.last_name, departments.dept_name
) as temp
Subquery temp result
Outer query with subquery temp result
使用 back-ticks 代替 double-quotes。
select `Employee Name`
from (select 'your, name' AS "Employee Name") temp
更好的是,在构建输出时避免在列名中放置空格。如果必须用空格格式化它们,请在最后完成。
select employee_name AS "Employee Name"
from (select 'your, name' AS employee_name) temp
在我的子查询结果中,我连接了 first_name 和 last_name。在我的外部查询中,我将子查询称为“temp”。由于我在子查询中连接了列,如何在我的外部查询中调用该连接列?
例如,我将员工姓名放在引号内,我知道这就是为什么将“员工姓名”显示为第 1 列值而不是显示实际员工姓名会给出错误结果的原因。
SQL查询:
Select "Employee Name",
dept_name, Salary,
sum(Salary) OVER (partition by dept_name) as "Total Sal Dept",
avg(Salary) OVER (partition by dept_name) as "Avg Sal / Dept"
FROM (
Select concat(employees.first_name, ", ",employees.last_name) as "Employee Name",
departments.dept_name,
Max(salaries.salary) as "Salary"
FROM departments
JOIN dept_manager ON (departments.dept_no = dept_manager.dept_no)
JOIN salaries ON (dept_manager.emp_no = salaries.emp_no)
JOIN employees ON (salaries.emp_no = employees.emp_no)
Group by employees.first_name, employees.last_name, departments.dept_name
) as temp
Subquery temp result
Outer query with subquery temp result
使用 back-ticks 代替 double-quotes。
select `Employee Name`
from (select 'your, name' AS "Employee Name") temp
更好的是,在构建输出时避免在列名中放置空格。如果必须用空格格式化它们,请在最后完成。
select employee_name AS "Employee Name"
from (select 'your, name' AS employee_name) temp