按日期进行计数和除法

时间:2018-12-17 08:34:48

标签: sql sql-server tsql

计算每个公司的资金, 除以到达日期的年份,只有当我们在该年度中至少支付了两笔贷款(支付日期!=空)时。

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

所以我想知道我的查询是否很好,我又该怎么做呢?我的意思是:仅当我们一年中至少有两笔已付款(付款日期!=空)时。

2 个答案:

答案 0 :(得分:0)

分组后,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.datarrival?),其中一年中有2个或更多非空支付日期。如果您的意思是应该是2个付款日期,那就不一样了。

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

答案 1 :(得分:0)

我找到了答案,非常感谢,祝你有美好的一天。

答案是:

    SELECT  A.IdAzienda, P.DataArrivo ,COUNT(*) AS NumeroFinanziamento
 FROM   dbo.Azienda A
LEFT JOIN dbo.Pratica P ON P.IdAzienda = A.IdAzienda
left JOIN dbo.Finanziamento F ON F.IdPratica = P.IdPratica
WHERE F.DataErogazione IS NOT NULL
GROUP BY A.IdAzienda, P.DataArrivo
HAVING COUNT(F.IdFinanziamento) >= 2
ORDER BY A.IdAzienda