我有兩個表:
表格1
| 在制品 1 | 時間戳 1 |
|---|---|
| 1 | 2021-11-04 |
| 2 | 2021-11-04 |
| 3 | 2021-11-04 |
| 4 | 2021-11-04 |
和表 2
| 在制品 2 | 時間戳2 | 狀態 2 |
|---|---|---|
| 1 | 2021-11-04 | 已收到 |
| 2 | 2021-11-04 | 待辦的 |
| 4 | 2021-11-04 | 已收到 |
SELECT如果表 1 上的 WIPS 已經存在于表 2 上,我想寫一個顯示,如果沒有,則顯示相應的訊息(保留表 2 訊息,即掛起或接收,如果 WIP 不存在,則添加訊息“未收到” t 存在于表 2)中,因此,使用我示例中的列:
| 世界知識產權組織 | 時間戳 | 地位 |
|---|---|---|
| 1 | 2021-11-04 | 已收到 |
| 2 | 2021-11-04 | 待辦的 |
| 3 | 2021-11-04 | 沒收到 |
| 4 | 2021-11-04 | 已收到 |
現在我已經嘗試了以下查詢:
select
t.WIP, t.TimeStamp, t.Operation
from
Table1 w
join
Table2 t on t.WIP = w.WIP
union
select
w.WIP, w.DateaReleased, 'Not Received' operation
from
Table1 w
left join
Table2 t on t.WIP = w.WIP
它有點作業,但它復制了記錄:

uj5u.com熱心網友回復:
您可以使用left joinand case,如下所示
select t1.wip1 as wipr, t2.TimeStamp2,
case when t2.wip2 is null then 'NOT RECEIVED' else t2.status2 end as status
from Table1 t1
left join Table2 t2 on t1.wip1 = t2.wip2
uj5u.com熱心網友回復:
只是@Farshid Shekari 答案的替代方案。
您還可以使用Coalesce:
select t1.wip1 as wipr
,t1.TimeStamp1 as timestampr
,coalesce(t2.status2, 'not received')
from Table1 t1
left join Table2 t2 on t1.wip1 = t2.wip2
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/349850.html
標籤:sql sql-server 查询语句
上一篇:查找最后兩行的日差
