Несколько оператор IF аргумента - T-SQL

Обновление: для 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

. Это поздний ответ, но я думаю, что это поможет кому-то искать то же самое.

25
задан Michael Kniskern 28 December 2009 в 20:03
поделиться

5 ответов

Вы делаете это правильно. Именно пустой блок кода и является причиной вашей проблемы. Это не структура условий :)

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
43
ответ дан 28 November 2019 в 07:10
поделиться

Это способ создания сложных логических выражений: объедините их с AND и OR. Размещенный вами фрагмент не выдает никакой ошибки для IF.

1
ответ дан Remus Rusanu 15 October 2019 в 16:08
поделиться

Не знаете, в чем проблема, кажется, это работает нормально?

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
1
ответ дан kd7 15 October 2019 в 16:08
поделиться

Ваш код действителен (за одним исключением). Требуется код между BEGIN и END.

Заменить

--do some work

на

print ''

Я думаю, может быть, вы видели «КОНЕЦ, а не« И »

1
ответ дан Gabriel McAdams 15 October 2019 в 16:08
поделиться

Похоже, работает нормально.

Если у Вас пустой BEGIN ... END блок вы можете увидеть

Msg 102, Level 15, State 1, Line 10 Неправильный синтаксис около 'END'.

1
ответ дан 28 November 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: