Обновление: для Django> = 1.8, пожалуйста, следуйте ответам, предоставленным @kmmbvnr
, возможно, используя Django ORM:
вот что вы должны сделать:
from django.db.models import Sum
total = ( Task.objects
.filter(your-filter-here)
.aggregate(
total=Sum('progress', field="progress*estimated_days")
)['total']
)
Примечание: если два поля имеют разные типы, скажем integer
& amp; float
, тип, который вы хотите вернуть, должен быть передан как первый параметр Sum
. Это поздний ответ, но я думаю, что это поможет кому-то искать то же самое.
Вы делаете это правильно. Именно пустой блок кода и является причиной вашей проблемы. Это не структура условий :)
DECLARE @StartDate AS DATETIME
DECLARE @EndDate AS DATETIME
SET @StartDate = NULL
SET @EndDate = NULL
IF (@StartDate IS NOT NULL AND @EndDate IS NOT NULL)
BEGIN
print 'yoyoyo'
END
IF (@StartDate IS NULL AND @EndDate IS NULL AND 1=1 AND 2=2)
BEGIN
print 'Oh hey there'
END
Это способ создания сложных логических выражений: объедините их с AND и OR. Размещенный вами фрагмент не выдает никакой ошибки для IF.
Не знаете, в чем проблема, кажется, это работает нормально?
DECLARE @StartDate AS DATETIME
DECLARE @EndDate AS DATETIME
SET @StartDate = NULL
SET @EndDate = NULL
IF (@StartDate IS NOT NULL AND @EndDate IS NOT NULL)
BEGIN
Select 'This works just fine' as Msg
END
Else
BEGIN
Select 'No Lol' as Msg
END
Ваш код действителен (за одним исключением). Требуется код между BEGIN и END.
Заменить
--do some work
на
print ''
Я думаю, может быть, вы видели «КОНЕЦ, а не« И »
Похоже, работает нормально.
Если у Вас пустой BEGIN ... END блок вы можете увидеть
Msg 102, Level 15, State 1, Line 10 Неправильный синтаксис около 'END'.