计算每个公司的资金, 除以到达日期的年份,只有当我们在该年度中至少支付了两笔贷款(支付日期!=空)时。
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
所以我想知道我的查询是否很好,我又该怎么做呢?我的意思是:仅当我们一年中至少有两笔已付款(付款日期!=空)时。
答案 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