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-й неделе могут иметь неправильный номер года.

Другие вопросы по тегам