SQL 服务器中的自定义聚合
Custom Aggregate In SQL Server
我在 Laravel 中有一个应用程序连接到 ubuntu 中的 SQL 服务器。
这是我的问题 table 这些字段:
BranchID、SupplierID、StuffID、RegDate、SupplyCount、SoldCount
BranchID、SupplierID、StuffID、RegDate 有动态分组查询。
我想用 BranchID 分组计算 SupplyCount 和 SoldCount 的总和。
但重点是:
我需要 sum(SupplyCount) 在最晚的 RegDate。那么我怎样才能尽可能简单地实现这个查询:
Select
BranchID,
SUM(SoldCount),
Sum(SupplyCount * (CASE MAX(RegDate) = RegDate) THEN 1 ELSE 0 END) )
FROM STUFFS
GROUP BY BranchID
但这不起作用,因为无法在另一个聚合函数中调用聚合函数。我想尽可能简单地实现它。
感谢提前提供的任何帮助。
我认为,使用子查询最简单的方法:
Select
BranchID,
SUM(SoldCount),
(SELECT SUM(p.SupplyCount) FROM STUFFS AS p WHERE p.RegDate = MAX(s.RegDate) AND p.BranchID = s.BranchID)
FROM STUFFS AS s
GROUP BY BranchID
我在 Laravel 中有一个应用程序连接到 ubuntu 中的 SQL 服务器。
这是我的问题 table 这些字段:
BranchID、SupplierID、StuffID、RegDate、SupplyCount、SoldCount
BranchID、SupplierID、StuffID、RegDate 有动态分组查询。
我想用 BranchID 分组计算 SupplyCount 和 SoldCount 的总和。
但重点是:
我需要 sum(SupplyCount) 在最晚的 RegDate。那么我怎样才能尽可能简单地实现这个查询:
Select
BranchID,
SUM(SoldCount),
Sum(SupplyCount * (CASE MAX(RegDate) = RegDate) THEN 1 ELSE 0 END) )
FROM STUFFS
GROUP BY BranchID
但这不起作用,因为无法在另一个聚合函数中调用聚合函数。我想尽可能简单地实现它。
感谢提前提供的任何帮助。
我认为,使用子查询最简单的方法:
Select
BranchID,
SUM(SoldCount),
(SELECT SUM(p.SupplyCount) FROM STUFFS AS p WHERE p.RegDate = MAX(s.RegDate) AND p.BranchID = s.BranchID)
FROM STUFFS AS s
GROUP BY BranchID