我有一个包含捐赠历史的表(id,transdate,amt to simplified),我需要计算一些总数。其中一些我可以使用最大和最小功能,但其他人我很难拔出。我需要的是:
ID
捐款数量
所有捐款的总和
第一个捐赠日期
首次捐赠(需要帮助)
上次捐款日期
上次捐款(需要帮助)
最大的捐赠日期(需要帮助)
最大的捐赠金额
除了那些需要帮助的人之外,我拥有一切。
这是一个简化的表格
CREATE TABLE [dbo].[Donations](
[ID] [varchar](10) NULL,
[TransactionDate] [datetime] NULL,
[Amount] [money] NULL,
) ON [PRIMARY]
以下是一些数据
insert into Donations Values('12','3-21-2009',25)
insert into Donations Values('12','3-10-2010',25)
insert into Donations Values('12','11-21-2012',100)
insert into Donations Values('12','5-25-2013',150)
insert into Donations Values('12','6-15-2014',150)
Insert into Donations Values('17','1-1-2014',500)
insert into Donations Values('26','12-23-2007',100)
insert into Donations Values('26','5-22-2013',150)
insert into Donations Values('26','2-11-2015',500)
以下是我使用
的查询SELECT ID,
COUNT(ID) AS Donation_count,
SUM(Amount) AS SumofDonations,
MIN(TransactionDate) AS FirstDonation_date,
MAX(TransactionDate) AS LastDonation_date,
MAX(Amount) AS LargestDonation_Amount
FROM dbo.Donations
GROUP BY ID
目前为止我的结果
... ID..Count.Sum ..... FirstDt .... LastDt LargestAmt
12 ... 5 ... 450 ... 2009年3月21日2014年6月15日... ... 150
17 ... 1 ... 500 ... 2014年1月1日2014年1月1日... ... 500
26 ... 3 ... 750 ... 2007年12月23日2015年2月11日... ... 500
任何人都可以帮我拉第一次捐赠金额(对应于第一次捐赠日期),上次捐赠金额(对应于上次捐赠日期)和最大捐赠日期(对应于最大捐赠金额)?
提前感谢您的帮助。
答案 0 :(得分:0)
您可以使用相关子查询。例如
SELECT [First Donation Amt] = (SELECT TOP 1 Amount FROM Donations b WHERE b.ID=a.ID ORDER BY TransactionDate),
ID,
COUNT(ID) AS Donation_count,
SUM(Amount) AS SumofDonations,
MIN(TransactionDate) AS FirstDonation_date,
MAX(TransactionDate) AS LastDonation_date,
MAX(Amount) AS LargestDonation_Amount
FROM dbo.Donations a
GROUP BY ID
对于每个需要的部署,您只需适当地从子查询顺序中获取最高值。这可能是最简单的。