有2个表,如下:
表a:
id cname
1 张
2 林
3 王
4 刘表b:
id charge
1 30
3 80如何实现如下结果:
id cname charge
1 张 30
2 林 0或null或干脆显示空白
3 王 80
4 刘 0或null或干脆显示空白
表a:
id cname
1 张
2 林
3 王
4 刘表b:
id charge
1 30
3 80如何实现如下结果:
id cname charge
1 张 30
2 林 0或null或干脆显示空白
3 王 80
4 刘 0或null或干脆显示空白
Select
A.id,
A.cname,
IsNull(B.charge, 0) As charge
From
A
Left Join
B
On A.id = B.id
Create Table a
(id Int,
cname Nvarchar(10))
Insert a Select 1, N'张'
Union All Select 2, N'林'
Union All Select 3, N'王'
Union All Select 4, N'刘'Create Table b
(id Int,
charge Int)
Insert b Select 1, 30
Union All Select 3, 80
GO
Select
A.id,
A.cname,
IsNull(B.charge, 0) As charge
From
A
Left Join
B
On A.id = B.id
Go
Drop Table a, b
--Result
/*
id cname charge
1 张 30
2 林 0
3 王 80
4 刘 0
*/
2000或以下的版本可用
*=
FROM a LEFT OUTER JOIN b On a.id = b.id
From A
Left Outer Join B
On A.id = B.id在SQL2005中测试通过
id cname
1 张
2 林
3 王
4 刘表b:
id charge note
1 30 晚班
3 80 加班如何实现如下结果(按条件加班查询):
id cname charge
1 张 0或null或干脆显示空白
2 林 0或null或干脆显示空白
3 王 80
4 刘 0或null或干脆显示空白
我的sql:
Select A.id,A.cname,IsNull(B.charge, 0) As charge
From A
Left Outer Join B
On A.id = B.id
where b.note='加班'查询结果:3 王 80 加班其他没有了
From A
Left Outer Join B
On A.id = B.id
And b.note='加班' -- Where 修改為And即可