表A看起来像
数字 | 数量 | 日期 |
---|---|---|
100 | 122.3 | 30-JUN-21 |
100 | 152.3 | 31-DEC-21 |
100 | 122.3 | 20-JUN-21 |
100 | 122.3 | 30-JUN-22 |
122 | 132.3 | 30-JUN-21 |
122 | 142.3 | 31-DEC-21 |
142 | 132.3 | 20-JUN-21 |
142 | 152.3 | 30-JUN-22 |
查询的输出应该看起来像..
数字 | 数量 | 日期 |
---|---|---|
100 | 244.6 | 20-JUN-21 |
122 | 132.3 | 30-JUN-21 |
142 | 132.3 | 20-JUN-21 |
议程是通过按数字取最小日期组来计算金额,如果同一最小月份中存在其他日期也必须包括在内。有人可以帮我查询吗?
select sum(amount),min(date) from A group by number;
答案 0 :(得分:2)
编写一个子查询,获取每个数字的最小日期。然后将其与表格连接以获取同一月份的所有行和数字,并将金额相加。
SELECT t1.number, SUM(t1.amount) AS amount, t2.date
FROM A AS t1
JOIN (
SELECT number, MIN(date) AS date
FROM A
GROUP BY number
) AS t2 ON t1.number = t2.number AND YEAR(t1.date) = YEAR(t2.date) AND MONTH(t1.date) = MONTH(t2.date)
GROUP BY t1.number