使用两个或多个select语句水平显示数据

时间:2016-03-08 03:21:35

标签: sql-server

我想从两个或多个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

如果我使用Union,数据将垂直显示,但我希望数据显示如下。 TQ

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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