1

我有这个查询,它返回 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,这就是我转换它的原因。

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

- 更新 -

嗨,我已经将格式更改为DATETIME. 现在查询看起来像这样:

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

它向我显示了所有产品的总量,我想要每个产品的总量……有什么想法吗?@DanBracuk

4

4 回答 4

1

假设您在表中有一个名为“partid”的列,它将是这样的:

select partid,sum(sales)
from 
 TABLE2 
where 
 Date1 between DATEADD(MONTH,-11,Date1) and DATEADD(MONTH,0,Date1);
group by partid
于 2013-07-12T19:00:55.223 回答
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
于 2013-07-12T18:59:15.840 回答
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`";
于 2017-01-30T08:16:57.517 回答
0

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

SELECT 
   Date1, product, SUM(sales)as [MAT] 
from 
   TABLE2 
where 
   Date1 between DATEADD(MONTH,-11,Date1) and DATEADD(MONTH,0,Date1)
group by Date1, product;
于 2017-08-07T04:41:42.133 回答