Sra*_*mar 4 sql-server sql-server-2008
我有两个表,如下所示.
Id Name Id Status
-------- -------------------
1 A 1 Approved
2 B 6 Approved
3 C 4 Pending
4 D 1 Approved
5 E 1 Pending
6 F 3 Pending
5 Rejected
Run Code Online (Sandbox Code Playgroud)
现在这就是我想要输出的方式:
Id Name Status
-------------------
1 A Pending
2 B
3 C Pending
4 D Pending
5 E
6 F
Run Code Online (Sandbox Code Playgroud)
我尝试过使用左连接,但我得到了多行.
select t1.ID,Name,Status from t1 left join t2 on t1.id=t2.id
Run Code Online (Sandbox Code Playgroud)
如果我添加Status = pending我只得到ID 1和3.这是我试过的查询:
select distinct t1.id,name,status from t1 left join t2 on t1.id=t2.id (this gives me duplicate records i.e id 1 is occurs twice with approved and pending)
Run Code Online (Sandbox Code Playgroud)
并且
select distinct t1.id,name,status from t1 left join t2 on t1.id=t2.id where t2.status='pending' (gives me only 1,3 and 4)
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我,提前谢谢.
要包含来自T1且仅包含来自的所有行T2,status = 'pending'请将条件移动到SQL FiddleON子句中
SELECT t1.ID,
Name,
Status
FROM t1
LEFT JOIN t2
ON t1.id = t2.id
AND t2.status = 'pending'
Run Code Online (Sandbox Code Playgroud)
只有id在你可以做的欺骗事件中每回一行(小提琴)
WITH CTE AS
(
SELECT DISTINCT id, Status
FROM T2
WHERE Status = 'Approved'
)
SELECT t1.ID,
Name,
Status
FROM t1
LEFT JOIN CTE
ON t1.id = CTE.id
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3170 次 |
| 最近记录: |