如何从不同的查询结果SQL创建表

时间:2018-10-24 17:22:01

标签: sql

我想使用某些查询的结果创建一个新表。我可能会以错误的方式看待这个问题,所以请随时告诉我。因此,我将尝试简化此问题,而不用让我的代码将每个员工编号与table2中的每个经理级别列匹配

我有两个表,一个表有员工姓名和员工编号示例

表1

+-------------+-----------+-------------+-------------+
| emplpyeenum | firstname |   last name |    location |
+-------------+-----------+-------------+-------------+
| 11          |    joe    |    free     | JE          |
| 22          |   jill    |   yoyo      | XX          |
| 33          |    yoda   |   null      | 9U          |
+-------------+-----------+-------------+-------------+

和另一个在每个经理级别下都有员工编号的表,因此基本上是一个层次结构示例

表2

+---------+----------+----------+
| manager | manager2 | manager3 |
+---------+----------+----------+
|      11 |       22 |       33 |
+---------+----------+----------+

我想创建一个新表,该表的名称除了数字之外,例如,但员工编号在名称旁边

+---------+--------+----------+
| level 1 | level2 |  level3  |
+---------+--------+----------+
| jill    |   joe  |    yoda  |
+---------+--------+----------+

我该怎么做?

编辑抱歉,我无权创建新表格或视图

2 个答案:

答案 0 :(得分:1)

为什么不将您的table2更改为此?

+------------+----------+
| EmployeeId | ManagerId|
+------------+----------+
|      11    |     NULL |
+------------+----------+
|      22    |     11   |
+------------+----------+
|      33    |     22   |
+------------+----------+

然后,您可以对数据进行所需的操作。至少您的数据将被正确规范化。在您的table2中。如果第33名员工在他下面雇用了另一名员工,将会怎样?您将添加另一列吗?

根据可用表,这应该为您提供所需的结果。

SELECT m1.firstname, m2.firstname, m3.firstname
FROM table2 t
LEFT JOIN table1 m1 ON m1.employeenum = t.manager
LEFT JOIN table1 m2 ON m2.employeenum = t.manager2
LEFT JOIN table1 m3 ON m3.employeenum = t.manager3

答案 1 :(得分:0)

您可以只做一个基本的创建表,然后做一个insert select to,它将以您需要的方式填充表。您所要做的就是将我提供的select语句替换为用来创建级别表输出的那条语句。

create table Levels
(
level1 varchar(25),
level2 varchar(25),
level3 varchar(25)
)


insert into Levels(level1, level2, level3)
select * from tables --here you would put the select statement that you used to create the information. If you dont have this script then let me know