2016-03-08 68 views
0

我想从两个或多个select语句水平显示数据。 实施例:以两个或多个select语句水平显示数据

Select DocNo, DocName, Sum(Amount) 
From tblCompanyA 
Group By DocNo, DocName 

Select DocNo, DocName, Sum(Amount) 
From tblCompanyB 
Group By DocNo, DocName 

Select DocNo, DocName, Sum(Amount) 
From tblCompanyC 
Group By DocNo, DocName 

如果我使用联盟,数据将垂直显示,但我想要显示的数据如下面的样品。 TQ

DocNo |DocName |CompanyA Amount |CompanyB Amount |CompanyC Amount 
---------------------------------------------------------------------------- 
DN0001 AAA   22345    22312    22311 
DN0002 BBB   20000    22321    22456 

回答

0

听起来像是你想join而是采用了union表。

Select 
    A.DocNo, A.DocName, 
    Sum(A.Amount) [CompanyA Amount], 
    Sum(B.Amount) [CompanyB Amount], 
    Sum(C.Amount) [CompanyC Amount] 
From tblCompanyA A 
Join tblCompanyB B on B.DocNo=A.DocNo 
Join tblCompanyC C on C.DocNo=A.DocNo 
Group By A.DocNo, A.DocName 

我假设所有的表都行了完全相同的一组DocNo值的,所以我用join,这意味着inner join

+0

Tq。这是答案!为什么我不认为这真的很简单。我正在计划寻找枢纽和booom!这里只是简单的加入。 – Dia

0

您可以将这些表连接在一起。其中一种方法是使用LEFT JOIN

select T1.DocNo as DocNo, T1.DocName as DocName, 
     sum(T1.Amount) as 'CompanyA Amount' 
     sum(T2.Amount) as 'CompanyB Amount' 
     sum(T3.Amount) as 'CompanyC Amount' 
from tblCompanyA T1 
    left join tblCompanyB T2 on T1.DocNo = T2.DocNo 
    left join tblCompanyC T3 on T1.DocNo = T3.DocNo 
Group by T1.DocNo, T1.DocName