我想根据另一个表中某些列的总和创建一个SQL视图。这很容易,但是,我希望新视图根据另一个表中的数据包含多个不同的总和:
Table1:
ID: Integer (PK, Autoenumerated)
CompanyID: Integer (Not the PK!)
Amount: Integer
每个CompanyID在表格中可以有多个不同的金额,我想总结所有这些金额。
View1:
TotalAmount: Integer
CompanyID: Integer
视图中的CompanyID应与Table1中的CompanyID匹配,但TotalAmount应该是Table1中为该CompanyID找到的所有金额的总和。
还有什么建议可以简单地改善查询?这个看起来很简单,但我当然无法想象它。
答案 0 :(得分:2)
create view V_AmountByCompany
as
select CompanyID, sum(Amount) as sumAmount
from YourTable
group by CompanyID
顺便提一下ID是没有意义的,因为你有很多Id by companyID:那么哪一个会保留?如果你真的想要它,你可以选择MIN(ID)
或MAX(ID)
,但又一次,选择什么?
答案 1 :(得分:2)
此查询将按公司汇总。这是你想要的吗?
CREEATE VIEW SumsView
AS
SELECT CompanyID
, SUM(Amount) TotalAmount
FROM Table1
GROUP BY CompanyID
在您提到的问题中,您希望ID
列包含在视图中,但您如何将ID与汇总金额相关联?
我能想到的唯一方法是你要复制总和,如下:
CREEATE VIEW SumsView
AS
SELECT T.ID
, T.CompanyID
, A.TotalAmount
FROM Table1 T
INNER JOIN (SELECT CompanyID
, SUM(Amount) TotalAmount
FROM Table1
GROUP BY CompanyID) A
ON T.CompanyID = A.CompanyID
答案 2 :(得分:2)
你应该这样做
create view newsumbycompanyid
as
select companyid,sum(amount) as newamount
from table1
group by companyid