復制錯了。try Select T.A, T.B, (Case C When 'A' Then A.D When 'B' Then B.D When 'C' Then C.D When 'D' Then D.D Else '' End) As D From 表1 T Left Join 表2 A On T.A = A.A Left Join 表3 B On T.A = B.A Left Join 表4 C On T.A = C.A Left Join 表5 D On T.A = D.A
这样?select A, B, case C when 'a' then 表2.D when 'b' then 表3.D when 'c' then 表4.D else 表5.D end as C from 表1 left join 表2 on 表1.A=表2.A left join 表3 on 表1.A=表3.A left join 表4 on 表1.A=表4.A left join 表5 on 表1.A=表5.A
--創建測試環境 Create Table 表1 (A Int, B Int, C Char(1)) Insert 表1 Select 1, 1, 'A' Union All Select 2, 2, 'B' Union All Select 3, 3, 'C' Union All Select 4, 4, 'D'Create Table 表2 (A Int, D Varchar(10)) Insert 表2 Select 1, 'A1'Create Table 表3 (A Int, D Varchar(10)) Insert 表3 Select 2, 'B1'Create Table 表4 (A Int, D Varchar(10)) Insert 表4 Select 3, 'C1'Create Table 表5 (A Int, D Varchar(10)) Insert 表5 Select 4, 'D1' GO --測試 Select T.A, T.B, (Case C When 'A' Then A.D When 'B' Then B.D When 'C' Then C.D When 'D' Then D.D Else '' End) As D From 表1 T Left Join 表2 A On T.A = A.A Left Join 表3 B On T.A = B.A Left Join 表4 C On T.A = C.A Left Join 表5 D On T.A = D.A GO --刪除測試環境 Drop Table 表1, 表2, 表3, 表4, 表5 --結果 /* A B D 1 1 A1 2 2 B1 3 3 C1 4 4 D1 */
这样:select A, B, isnull(isnull(isnull(表2.D,表3.D),表4.D),表5.D) as Dfrom 表1 left join 表2 on 表1.A=表2.A left join 表3 on 表1.A=表3.A left join 表4 on 表1.A=表4.A left join 表5 on 表1.A=表5.A
是这样select A, B, isnull(isnull(isnull(表2.D,表3.D),表4.D),表5.D) as Dfrom 表1 left join 表2 on 表1.C=表2.A left join 表3 on 表1.C=表3.A left join 表4 on 表1.C=表4.A left join 表5 on 表1.C=表5.A
Haiwer(海阔天空) ( ) 信誉:138 2007-07-17 16:03:12 得分: 0
是这样select A, B, isnull(isnull(isnull(表2.D,表3.D),表4.D),表5.D) as Dfrom 表1 left join 表2 on 表1.C=表2.A left join 表3 on 表1.C=表3.A left join 表4 on 表1.C=表4.A left join 表5 on 表1.C=表5.A------------這樣不一定正確叻。如果表1中的ID在表2,表3,表4,表5中都有的話,就有問題了。
Select
T.A,
T.B,
(Case C When 'A' Then A.D When 'B' Then B.D When 'C' Then C.D When 'D' Then D.D Else '' End) As D
From
表1 T
Left Join
表2 A
On T.A = A.A
Left Join
表3 B
On T.A = B.A
Left Join
表4 C
On T.A = C.A
Left Join
表5 D
On T.A = D.A
B,
case C when 'a' then 表2.D when 'b' then 表3.D when 'c' then 表4.D else 表5.D end as C
from 表1
left join 表2 on 表1.A=表2.A
left join 表3 on 表1.A=表3.A
left join 表4 on 表1.A=表4.A
left join 表5 on 表1.A=表5.A
Create Table 表1
(A Int,
B Int,
C Char(1))
Insert 表1 Select 1, 1, 'A'
Union All Select 2, 2, 'B'
Union All Select 3, 3, 'C'
Union All Select 4, 4, 'D'Create Table 表2
(A Int,
D Varchar(10))
Insert 表2 Select 1, 'A1'Create Table 表3
(A Int,
D Varchar(10))
Insert 表3 Select 2, 'B1'Create Table 表4
(A Int,
D Varchar(10))
Insert 表4 Select 3, 'C1'Create Table 表5
(A Int,
D Varchar(10))
Insert 表5 Select 4, 'D1'
GO
--測試
Select
T.A,
T.B,
(Case C When 'A' Then A.D When 'B' Then B.D When 'C' Then C.D When 'D' Then D.D Else '' End) As D
From
表1 T
Left Join
表2 A
On T.A = A.A
Left Join
表3 B
On T.A = B.A
Left Join
表4 C
On T.A = C.A
Left Join
表5 D
On T.A = D.A
GO
--刪除測試環境
Drop Table 表1, 表2, 表3, 表4, 表5
--結果
/*
A B D
1 1 A1
2 2 B1
3 3 C1
4 4 D1
*/
B,
isnull(isnull(isnull(表2.D,表3.D),表4.D),表5.D) as Dfrom 表1
left join 表2 on 表1.A=表2.A
left join 表3 on 表1.A=表3.A
left join 表4 on 表1.A=表4.A
left join 表5 on 表1.A=表5.A
B,
isnull(isnull(isnull(表2.D,表3.D),表4.D),表5.D) as Dfrom 表1
left join 表2 on 表1.C=表2.A
left join 表3 on 表1.C=表3.A
left join 表4 on 表1.C=表4.A
left join 表5 on 表1.C=表5.A
是这样select A,
B,
isnull(isnull(isnull(表2.D,表3.D),表4.D),表5.D) as Dfrom 表1
left join 表2 on 表1.C=表2.A
left join 表3 on 表1.C=表3.A
left join 表4 on 表1.C=表4.A
left join 表5 on 表1.C=表5.A------------這樣不一定正確叻。如果表1中的ID在表2,表3,表4,表5中都有的話,就有問題了。