SQL Datepart,乘以每周总和的列

时间:2017-01-29 18:18:04

标签: c# sql razor sql-server-ce datepart

我发现如果我想以每周方式查看数据,我必须使用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。

1 个答案:

答案 0 :(得分:1)

你正在寻找这样的东西:

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可能最终有错误的年份。