【发布时间】:2021-09-03 19:56:49
【问题描述】:
表 1
| EmployeeId | Employee Name |
|---|---|
| 1 | Employee1 |
| 2 | Employee2 |
表2
| EmployeeId | Leave Date |
|---|---|
| 1 | 01/08/2021 |
| 2 | 01/08/2021 |
| 1 | 02/08/2021 |
| 3 | 03/08/2021 |
| 1 | 04/08/2021 |
| 2 | 05/08/2021 |
我尝试过像这样加入表格
select EmployeeId, LeaveDate from
Table1
JOIN table 2 on table1.EmplaoyeeId = table2.EmployeeId
order by EmployeeId
但是得到这样的输出
| EmployeeId | LeaveDate |
|---|---|
| 1 | 01/08/2021 |
| 1 | 02/08/2021 |
| 1 | 04/08/2021 |
| 2 | 05/08/2021 |
| 2 | 01/08/2021 |
| 3 | 03/08/2021 |
想要的结果
| EmployeeId | LeaveDate |
|---|---|
| 1 | 01/08/2021 |
| 02/08/2021 | |
| 04/08/2021 | |
| 2 | 01/08/2021 |
| 05/08/2021 | |
| 3 | 03/08/2021 |
我需要打印一次左表数据,其余匹配的行应该为空。
【问题讨论】:
-
不要在 SQL 中这样做。在你的程序逻辑中这样做
-
我和 juergen d 在这里。这是你不应该在 SQL 中做的事情。虽然这是可能的,甚至很简单(使用
LAG和CASE WHEN),但应在您的应用程序中处理显示问题。 SQL 旨在为您提供数据。并且休假日期 02/08/2021 属于员工 1,而不是员工 NULL。 -
您应该在网站代码的报告结构中更改此内容,而不是在 sql 上实现
-
请仅标记您正在使用的 DBMS。它是 SQL Server 还是 SQLite?附带说明:该查询中不需要 tale1 。所需的所有数据都在表 2 中。
-
@ThorstenKettner 能否请您简要解释一下我如何在应用程序端实现?遍历所有行并手动擦除值将花费更多时间
标签: sql