2017-10-13 40 views
0

我需要创建一个从两个表中查询数据的视图数据:获取从所需的列从两个表

  • 表#1作为Project(包含列ProjectIDResource1Resource2Resource3Resource4等)

  • 表#2 ResourceTable(包含列ResourceIDAccountNO等)

我需要根据ProjectID查询AcccountNo四个资源。

ProjectID, AccountNO for Resource1, AccountNO for Resource2, AccountNO for Resource3, AccountNO for Resource4 

为此,我创建了下面的查询 - 但它只是一个资源返回数据:

SELECT 
    [ProjectID], [AccountNO] 
FROM 
    [dbo].[Project] 
INNER JOIN 
    [dbo].[ResourceTable] ON [ProjectID].[ResourceID1] = [dbo].[ResourceTable].[AccountNO ] 

输出:

ProjectID AccountNoforResource1 
---------------------------------- 
08SMA0001 NULL 
10DL0051 29608529 
10DL0052 NULL 
10DL0053 NULL 
10DL0055 29608233 
10DL0058 29608233 
11DL0011 NULL 
11DL0013 29608233 

,但我需要的所有资源帐户号码..

请帮我解决这个..

谢谢..

+1

我想..您需要添加专案编号在你的第二个表... – GYaN

+0

看来,你的设计很差。为什么'Project'表为'resources'分隔列。如果有“第五”资源呢? – zarruq

+0

也友好分享样品数据和所需的输出。 – zarruq

回答

0

既然你输入了两遍,我假设[AccountNO ](与空间)是实际的列名,如果是这样,这是一个有点怪异,但好!

请尝试以下的查询。还请注意我如何使用as关键字aliased表格:p,r1,r2等等。该as关键字是完全可选的(我通常离开它,倒是它的清晰度):

select [ProjectID], 
    r1.[AccountNO ] as [AccountNO_1], 
    r2.[AccountNO ] as [AccountNO_2], 
    r3.[AccountNO ] as [AccountNO_3], 
    r4.[AccountNO ] as [AccountNO_4], 
from [dbo].[Project] as p 
left join [dbo].[ResourceTable] as r1 on p.[ResourceID1] = r1.[ResourceID] 
left join [dbo].[ResourceTable] as r2 on p.[ResourceID2] = r2.[ResourceID] 
left join [dbo].[ResourceTable] as r3 on p.[ResourceID3] = r3.[ResourceID] 
left join [dbo].[ResourceTable] as r4 on p.[ResourceID4] = r4.[ResourceID]