A表:
A_ID BK_NO NAME
1 001 A
2 002 B
3 003 CB表:
B_ID BK_NO CHG_CODE
1 001 AAA
2 002 BBB
3 003 CCC
4 DDD
5 EEE
6 001 FFF怎样能查出如下:
A_ID BK_NO NAME B_ID BK_NO CHG_CODE
1 001 A 1 001 AAA
1 001 A 6 001 FFF
2 002 B 2 002 BBB
3 003 C 3 003 CCC
4 DDD
5 EEE
谢谢~
A_ID BK_NO NAME
1 001 A
2 002 B
3 003 CB表:
B_ID BK_NO CHG_CODE
1 001 AAA
2 002 BBB
3 003 CCC
4 DDD
5 EEE
6 001 FFF怎样能查出如下:
A_ID BK_NO NAME B_ID BK_NO CHG_CODE
1 001 A 1 001 AAA
1 001 A 6 001 FFF
2 002 B 2 002 BBB
3 003 C 3 003 CCC
4 DDD
5 EEE
谢谢~
Full Join
A表按条件呢?就不对了比如A表按条件:NAME为A的,
查出要如下结果:
A_ID BK_NO NAME B_ID BK_NO CHG_CODE
1 001 A 1 001 AAA
1 001 A 6 001 FFF
4 DDD
5 EEE
这个语句怎么写呢?
select a.*,b.* from B表 b
left join A表 a
on a.bk_no=b.bk_no
(A_ID Int,
BK_NO Char(3),
NAME Varchar(10))
Insert A Select 1, '001', 'A'
Union All Select 2, '002', 'B'
Union All Select 3, '003', 'C'Create Table B
(B_ID Int,
BK_NO Char(3),
CHG_CODE Varchar(10))
Insert B Select 1, '001', 'AAA'
Union All Select 2, '002', 'BBB'
Union All Select 3, '003', 'CCC'
Union All Select 4, '', 'DDD'
Union All Select 5, '', 'EEE'
Union All Select 6, '001', 'FFF'
GO
--得到所有的
Select
A.*, B.*
From A
Full Join B
On A.BK_NO = B.BK_NO
Order By (IsNull(A.A_ID, 1000000)), B_ID--得到NAME为A的
Select
A.*, B.*
From A
Full Join B
On A.BK_NO = B.BK_NO
Where A.NAME = 'A' Or A.NAME Is Null
Order By (IsNull(A.A_ID, 1000000)), B_ID
Go
Drop Table A,B
----Result
/*
A_ID BK_NO NAME B_ID BK_NO CHG_CODE
1 001 A 1 001 AAA
1 001 A 6 001 FFF
2 002 B 2 002 BBB
3 003 C 3 003 CCC
NULL NULL NULL 4 DDD
NULL NULL NULL 5 EEEA_ID BK_NO NAME B_ID BK_NO CHG_CODE
1 001 A 1 001 AAA
1 001 A 6 001 FFF
NULL NULL NULL 4 DDD
NULL NULL NULL 5 EEE
*/