SQL Datepart, умножить столбцы на недельную сумму
Я обнаружил, что я должен использовать 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, если это имеет значение.
1 ответ
Вы ищете что-то вроде этого:
SELECT
DATEPART(wk, date),
sum(kg * sett * rep) as weeklyvol
FROM
Test
GROUP BY
DATEPART(wk, date)
Это займет неделю с вашей даты и сгруппируется с ней, а также покажет сумму суммы во втором столбце. Вы можете использовать isowk
вместо wk
в свидании
Если вам нужен также год, используя datepart(year...
не работает должным образом, см., например, эту ссылку. Без этого даты на 52-й, 53-й и 1-й неделе могут иметь неправильный номер года.