我有一个包含以下列的数据库: 供应商,金额,StartDate,月份
我希望能够根据输入的月份计算月平均金额。我还希望看到它根据StartDate + Months计算从开始日期到结束日期计算出来。结果表看起来像这样:
Vendor1从1月1日开始有2个月的1112,而Vendor2有2个月的2个月的3个月盯着2月1日
| | ANNUAL | JAN | FEB | MAR | APR |
Vendor1 | 2,224 | 1,112 | 1,112 | | |
Vendor2 | 6,120 | | 2,040 | 2,040 | 2,040 |
非常感谢任何协助或指示。
答案 0 :(得分:0)
这是一个奇怪的数据库设计。但是,这是你必须尝试的:
SELECT (Amount * Months) AS Annual, (Case @(StartDate < DATE("01.02.year")) WHEN 1 THEN Amount ELSE NULL) AS Jan FROM Table --etc for all months
但是会考虑修改,因为这种方式有点过于简单。
答案 1 :(得分:0)
您将使用条件聚合。假设开始日期都在同一年,代码可能如下所示:
select vendorid, (amount * months) as total,
(case when month(startdate) <= 1 and month(startdate) + months >= 1
then amount
end) as jan,
(case when month(startdate) <= 2 and month(startdate) + months >= 2
then amount
end) as feb,
(case when month(startdate) <= 3 and month(startdate) + months >= 3
then amount
end) as mar,
(case when month(startdate) <= 4 and month(startdate) + months >= 4
then amount
end) as apr,
from t;