两个日期计算字段之间的值的SQL SUM(SQL SUM of values between two

2019-10-18 09:30发布

我有这个疑问,它返回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);

在列,日期1格式为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

Answer 1:

假设你已经得到了在被称为“PARTID”的表中的列,这将是这样的:

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


Answer 2:

在表2什么其他列? 特别是在表中标识了产品的名称?

我敢肯定你需要的是在最后一组通过声明。 就像是

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


Answer 3:

两个日期计算字段之间的值的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`";


Answer 4:

如果由这两个日期之间的产品需要为每个日期值的总和,你建议立即进行删除添加的日期和产品领域的一组通过;

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;


文章来源: SQL SUM of values between two dates calculated fields