用于预算的SQL计算

时间:2016-09-01 21:05:46

标签: sql pivot calculated-columns

我有一个包含以下列的数据库: 供应商,金额,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 | 

非常感谢任何协助或指示。

2 个答案:

答案 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;