我有一个查询问题,我想在其中累积值然后对它们进行分组 PS:这是一个简化的示例
CREATE TABLE [dbo].[OWNER](
[personId] [int] NULL,
[ownerId] [int] NULL,
[firstName] [varchar](255) NULL,
[lastName] [varchar](255) NULL,
)
GO
CREATE TABLE [dbo].[INCOME](
[personId] [int] NULL,
[amount] [float] NULL,
[received] [date] NULL,
)
GO
INSERT INTO OWNER Values(1,null, 'John', 'Smith')
INSERT INTO OWNER Values(1,null, 'John', 'Smith')
INSERT INTO OWNER Values(1,null, 'John', 'Smith')
INSERT INTO OWNER Values(200,1, 'Tom', 'Lawn')
INSERT INTO OWNER Values(3,3, 'Chris', 'Hanson')
INSERT INTO OWNER Values(400,4, 'Jack', 'Man')
INSERT INTO OWNER Values(4,null, 'Donald', 'McMan')
INSERT INTO OWNER Values(5,null, 'John', 'Hanson')
INSERT INTO OWNER Values(700,5, 'Peter', 'Darcy')
INSERT INTO OWNER Values(700,5, 'Peter', 'Darcy')
Insert INTO INCOME VALUES(1, 300, '2020-01-01')
Insert INTO INCOME VALUES(200, 1000, '2020-01-01')
Insert INTO INCOME VALUES(3, 200, '2020-01-01')
Insert INTO INCOME VALUES(4,300, '2020-01-01')
Insert INTO INCOME VALUES(5,300, '2020-01-01')
Insert INTO INCOME VALUES(1,300, '2020-01-01')
Insert INTO INCOME VALUES(3,300, '2020-01-01')
Insert INTO INCOME VALUES(5,500, '2020-01-01')
Insert INTO INCOME VALUES(700,500, '2020-01-01')
在 Owner 表中可以有重复的记录。做一个聚合我可以写
select personId,
sum(amount) as total,
count(*) as rows
from income
group by personid
这将导致
personId total rows
1 600 2
3 500 2
4 300 1
5 800 2
200 1000 1
700 500 1
问题是我想获取 Owner 的聚合并得到以下结果
personId total rows
1 1600 3
3 500 2
4 300 1
5 1300 3
由于 personId 200 的 ownerId 为 1,而 personId 700 的 ownerId 为 5。我将不胜感激有关如何实现这一点的帮助。