首页 > 解决方案 > 按日期执行计数和除法

问题描述

仅当我们在一年中至少支付了两笔贷款(支付日期!= null)时,才为每家公司计算资金,除以到达日期的年份。

SELECT F.Id, P.DatArrival, COUNT(*) AS Number
FROM    company C
INNER JOIN dbo.Prat P ON P.ID = C.ID
INNER JOIN funding F ON F.IdPrat = P.IdPrat
--WHERE 
GROUP BY F.Id, P.DatArrival

所以我想知道我的查询是否很好,我该怎么做另一个我的意思是这个:只有当我们在一年中至少支付了两笔贷款(支付日期!= null)。

标签: sqlsql-servertsql

解决方案


HAVING 子句将在分组后限制一组行

SELECT F.Id, P.DatArrival, COUNT(*) AS Number
FROM    company C
INNER JOIN dbo.Prat P ON P.ID = C.ID
INNER JOIN funding F ON F.IdPrat = P.IdPrat
--WHERE 
GROUP BY F.Id, P.DatArrival
HAVING COUNT(disbursementdate) >= 2

您似乎正在翻译您的网页;我不知道付款日期的列名称是什么

此查询仅显示公司 (f.id?) 和年份 (p.dataarrival?),其中一年中有 2 个或多个非空付款日期。如果您的意思是它应该是 2 个付款日期,那是不同的..

此外,如果 DatArrival 是日期(月和日)以及年份,那么您应该从中提取年份,也许使用 YEAR(p.DatArrival)


推荐阅读