这是我的表:
ID AppName DepCode DepName Group ModifiedDate YearlyAmount
1 Nestle NS Foods Products 01/12/14 451
1 Nestle NS Foods Products 01/17/14 495
2 Oracle OR Software Info 01/24/14 279
2 Oracle OR Soft & IT Info 01/26/14 310
2 Oracle ORL Software Info 01/25/14 219
2 Oracle ORL Soft IT 01/28/14 600
MonthlyAmount Funded AppCategory Research
37.5623 Yes NE NA
41.2365 No N NA
23.2568 Yes OR InProgress
25.8333 Yes ORL NA
18.2189 Yes SOF Approved
50.0000 No IT Rejected
预期输出:
ID AppName DepCode DepName Group ModifiedDate YearlyAmount
1 Nestle NS Foods Products 01/17/14 946
2 Oracle OR Soft & IT Info 01/26/14 589
2 Oracle ORL Soft IT 01/28/14 819
MonthlyAmount Funded AppCategory Research
78.7988 No N NA
49.0901 Yes ORL NA
68.2189 No IT Rejected
我想选择DepCode的最近修改日期,并将年度和月度金额相加。我试过这个查询而无法获得输出。这也是一张桌子。
select B1.[ID], B1.[AppName], B2.[DepCode], B1.[DepName], B1.[Group],
B2.ModifiedDate, B2.YearlyAmount, B2.MonthlyAmount,
B1.[Funded], B1.[AppCategory], B1.[Research]
FROM Business B1
INNER JOIN
(select [ID], B1.[DepCode], MAX(ModifiedDate) as ModifiedDate, SUM(YearlyAmount) as YearlyAmount,
SUM(MonthlyAmount) as MonthlyAmount
from Business
Group by ID, DepCode) B2
ON B1.ID = B2.ID AND B1.ModifiedDate = B2.ModifiedDate
任何人都请指正,或建议如何解决这个问题,因为我是SQL的首发。
答案 0 :(得分:0)
这有点复杂,因为有几列你不能使用聚合函数 - 它们的值来自具有最大日期的记录。您可以使用子查询首先获取总计和最大日期,然后使用该信息获取其他列
select B1.[ID], B1.[AppName], B2.[DepCode], B1.[DepName], B1.[Group],
B2.ModifiedDate, B2.YearlyAmount, B2.MonthlyAmount,
B1.[Funded], B1.[AppCategory], B1.[Research]
FROM Business B1
INNER JOIN
(select [ID], DepCode, MAX(ModifiedDate) as ModifiedDate, SUM(YearlyAmount) as YearlyAmount,
SUM(MonthlyAmount) as MonthlyAmount
from Business
Group by ID, DepCode) B2
ON B1.ID = B2.ID AND B1.ModifiedDate = B2.ModifiedDate
答案 1 :(得分:0)
问题是您的几列没有相同的值,因此groupby
无效。
由于您需要recent modified date for DepCode
,sum Yearly
和Monthly Amount
试试这个
SELECT [ID], [AppName], [DepCode],
MAX(ModifiedDate) AS ModifiedDate,
SUM(YearlyAmount) AS YearlyAmount,
SUM(MonthlyAmount) AS MonthlyAmount
FROM [dbo].[Bus]
GROUP BY DepCode, ID, AppName
ORDER BY ID