我发现如果我想以每周方式查看数据,我必须使用DATEPART
,我只是不确定如何将我的SQL查询放在一起。
到目前为止,我有了这个,这是一般的想法。
var querythis = "SELECT DATEPART(wk, (kg * sett * rep)) as weeklyvol FROM Test GROUP BY date, kg, sett, rep";
因此,kg
,sett
和rep
是我的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。
答案 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可能最终有错误的年份。