SQL Datepart,将列乘以每周总和

SQL Datepart, multiply columns for a weekly sum

我发现如果我想每周查看数据,我必须使用 DATEPART,我只是不确定如何将我的 SQL 查询放在一起。

到目前为止我已经明白了,这是一般的想法。

var querythis = "SELECT DATEPART(wk, (kg * sett * rep)) as weeklyvol FROM Test GROUP BY date, kg, sett, rep";

所以,kgsettrep 是我的数据库列中的 3 个,还有 date 当然是 datetime,那 3 个都是 integers 所以我想将它们乘以每周总数。

例如:

24 Jan 2017 - 100 x 10 x 3 = 3000
25 Jan 2017 - 100 x 5 x 5 = 2500
26 Jan 2017 - 150 x 3 x 3 = 1350

这将导致第 4 周 = 6850

GROUP BY date, kg, sett, rep";

我实际上不确定代码的上述行^部分是做什么的,我必须包括所有代码,否则我会出错。

目前,当我像下面这样写出来时,它没有错误,但它没有给我想要的结果,我什至不知道这些数字是从哪里来的,但至少不正确。

foreach (var c in db.Query(querythis))
{
    <a>@c.weeklyvol</a><br />
}

有人知道怎么做吗?

我正在使用 SQL Server Compact,如果有区别的话。

您正在寻找这样的东西:

SELECT 
  DATEPART(wk, date),
  sum(kg * sett * rep) as weeklyvol 
FROM 
  Test 
GROUP BY 
  DATEPART(wk, date)

这将从您的日期开始计算周数,并以此为依据进行分组,并将交易量总和显示为第二列。您可能希望在 datepart.

中使用 isowk 而不是 wk

如果您还需要年份,则使用 datepart(year... 无法正常工作,请参见 this link 示例。如果没有它,第 52、53 和 1 周的日期可能会出现错误的年份。