SQL循环数月

时间:2019-10-11 15:20:45

标签: sql loops

我非常新,并且非常了解SQL,因此我有这个问题希望有人可以帮助我。

这是我的查询:

SELECT 
    SUM(Amount) AS Paid, 
    COUNT(DISTINCT Count) AS total_Count,
    SUM(Amount) / COUNT(DISTINCT Count) AS Ratio
FROM 
    TableA
WHERE
    Date BETWEEN '2018-01-01' AND '2018-12-30' 

我的问题是如何逐月循环而不是每次都硬编码日期范围。目的是获得这样的最终结果。

Month      Paid     Total      Ratio
--------------------------------------
Jan
Feb
Mar

1 个答案:

答案 0 :(得分:2)

您没有提到正在使用的RDBMS,但是它们都具有从日期中提取月份名称的机制。

因此,您可能会做类似

的操作
SELECT 
datepart(date, 'Month') as month,
sum(Amount) as Paid, 
count(distinct Count) as total_Count,
sum(Amount) / count(distinct Count) as Ratio
FROM TableA
group by datepart(date, 'Month')

“分组依据”功能对您的总和/计数列进行分组(在这种情况下,按月)。您可能需要将日期限制为当前年份,或包括年份列。