两个日期之间的值的SQL SUM计算字段

时间:2013-07-12 15:42:20

标签: sql sql-server tsql date between

我有这个查询,它返回null:

SELECT 
   SUM(sales) as [MAT]  
from 
   TABLE2 
where 
   Date1 between CONVERT(VARCHAR(23), DATEADD(MONTH, -11, Date1), 111) and 
                 CONVERT(VARCHAR(23), DATEADD(MONTH, 0, Date1), 111);

在列中,date1的格式为YYYY-DD-MM,这就是我转换它的原因。

我想要在这两个日期之间按产品(另一个字段)计算每个日期的金额总和。

- UPDATE -

嗨,我已经将格式更改为DATETIME。现在查询如下所示:

SELECT 
   SUM(sales)as [MAT] 
from 
   TABLE2 
where 
   Date1 between DATEADD(MONTH,-11,Date1) and DATEADD(MONTH,0,Date1);

它显示了所有产品的总量,我希望每个产品的总数...任何想法? @DanBracuk

4 个答案:

答案 0 :(得分:1)

假设你在表格中有一个名为'partid'的列,它将是这样的:

select partid,sum(sales)
from 
 TABLE2 
where 
 Date1 between DATEADD(MONTH,-11,Date1) and DATEADD(MONTH,0,Date1);
group by partid

答案 1 :(得分:0)

在表2中,其他列是什么?具体是表中确定的产品名称?

我非常确定你需要的是最后的Group By声明。像

这样的东西
SELECT productName,sum(sales) 
FROM table 2 
WHERE date 1 between DATEADD(MONTH,-11,Date1) and DATEADD(MONTH,0,Date1) 
GROUP BY productName

答案 2 :(得分:0)

两个日期计算字段之间的值的SQL SUM

$sql =  "SELECT  `product_field_name`,
         SUM(CASE WHEN `DATE1_field_name` BETWEEN  '".$MINdate."' and '".$MAXdate."' THEN sales ELSE 0 END) AS 'MAT'
         FROM TABLE_name 
         GROUP BY `product_field_name`";

答案 3 :(得分:0)

如果您需要在这两个日期之间按产品划分每个日期的值的总和,则应将日期和产品字段作为一组添加;

onPostExecute()