2017-01-29 15 views
0

Я обнаружил, что мне нужно использовать DATEPART, если я хочу просматривать данные еженедельно, я просто не уверен, как скомпоновать мой SQL-запрос.SQL Datepart, умножить столбцы на недельную сумму

До сих пор я получил это, что является общей идеей.

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"; 

Im на самом деле не уверен, что делает выше строка^часть кода, я должен был включать в себя все их или я получаю ошибки.

В настоящее время его ошибка свободна, когда я пишу ее следующим образом, но она не дает мне результата, который я хочу, я даже не знаю, из чего происходят цифры, но, по крайней мере, неверно.

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 в датеpart.

Если вам нужен и год, использование datepart(year... не работает должным образом, см., Например, this link. Без этого даты на неделе 52, 53 и 1 могут закончиться неправильным номером года.

+0

Прохладный, это определенно сделало трюк! Тем не менее, я вижу, что когда он меняет год, он только заказывает номер недели, а не дату, это то, что я могу решить? то есть, начиная с 52 недели 2016 года до 1-й недели 2017 года, он ставит результат недели 1 до 52-й недели! –

+0

и да, 'isowk', кажется, рекомендуется в моей стране! –

+0

Вы можете добавить еще один столбец за год и добавить его в группу. Самая большая проблема заключается в том, что нет никакой функции для получения правильного года для недель iso, потому что год не всегда правильный для недели 52/53/1. Существуют [примеры] (http://stackoverflow.com/questions/22829604/what-is-iso-year-in-sql-server), как создать для этого функцию. –

 Смежные вопросы

  • Нет связанных вопросов^_^