Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите с запросом  [new]
speckuznec
Member

Откуда:
Сообщений: 62
У меня Microsoft SQL Server Compact 3.5 с пакетом обновления 2 (SP2), запрос представлен в виде строки
SELECT     JExpense.IdJExp, JExpense.IdDoc, JExpense.JDate, JExpense.IdAn, JExpense.JNote, JExpense.JSum, JExpense.IdCur, JExpense.CurCour, 
                      JExpense.IdAccDb, JExpense.IdAccCr, JExpense.IdAgWhere, JExpense.IdAgWho, JExpense.IdAnBas, Analytics.AnName, 
                      AnBas.AnName AS AnBasAnName, Currency.KodV, AccDb.AccCode AS AccDbAccCode, AccDb.AccName AS AccDbAccName, 
                      AccDb.AccSign AS AccDbAccSign, COALESCE (AccDb.AccCode, '') + '.' + COALESCE (AccDb.AccSign, '') AS AccDbSign, AccCr.AccCode AS AccCrAccCode, 
                      AccCr.AccName AS AccCrAccName, AccCr.AccSign AS AccCrAccSign, COALESCE (AccCr.AccCode, '') + '.' + COALESCE (AccCr.AccSign, '') AS AccCrSign, 
                      AgWhere.AgName
FROM         JExpense LEFT OUTER JOIN
                      Analytics ON Analytics.IdAn = JExpense.IdAn LEFT OUTER JOIN
                      Analytics AS AnBas ON AnBas.IdAn = JExpense.IdAnBas LEFT OUTER JOIN
                      Currency ON Currency.IdCur = JExpense.IdCur LEFT OUTER JOIN
                      Accounts AS AccDb ON AccDb.IdAcc = JExpense.IdAccDb LEFT OUTER JOIN
                      Accounts AS AccCr ON AccCr.IdAcc = JExpense.IdAccCr LEFT OUTER JOIN
                      Agents AS AgWhere ON AgWhere.IdAg = JExpense.IdAgWhere
WHERE    [b](JExpense.IdAgWhere = @Param1)[/b] AND (JExpense.JDate BETWEEN @Param2 AND @Param3)

мне ноебходимо чтобы выделенное условие было такого вида
(if(isnull(@Param1),true,JExpense.IdAgWhere = @Param1))

заранее благодарен
24 май 11, 11:50    [10699007]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Adony
Member

Откуда: Москва
Сообщений: 1085
(@Param1 is null or JExpense.IdAgWhere = @Param1)
24 май 11, 11:57    [10699076]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
speckuznec
Member

Откуда:
Сообщений: 62
Adony спасибо за совет

Привожу так как пропустило
WHERE     (JExpense.JDate BETWEEN @Param2 AND @Param3) AND (JExpense.IdAgWhere = @Param1) OR
                      (JExpense.JDate BETWEEN @Param2 AND @Param3) AND (@Param1 IS NULL)
24 май 11, 12:16    [10699139]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
speckuznec
Adony спасибо за совет

Привожу так как пропустило
WHERE     (JExpense.JDate BETWEEN @Param2 AND @Param3) AND (JExpense.IdAgWhere = @Param1) OR
                      (JExpense.JDate BETWEEN @Param2 AND @Param3) AND (@Param1 IS NULL)
Кто "пропустило"?
А так не "пропустило"?
WHERE JExpense.JDate BETWEEN @Param2 AND @Param3 AND (@Param1 IS NULL OR JExpense.IdAgWhere=@Param1)
24 май 11, 12:30    [10699255]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
speckuznec
Member

Откуда:
Сообщений: 62
iap
speckuznec
Adony спасибо за совет

Привожу так как пропустило
WHERE     (JExpense.JDate BETWEEN @Param2 AND @Param3) AND (JExpense.IdAgWhere = @Param1) OR
                      (JExpense.JDate BETWEEN @Param2 AND @Param3) AND (@Param1 IS NULL)
Кто "пропустило"?
А так не "пропустило"?
WHERE JExpense.JDate BETWEEN @Param2 AND @Param3 AND (@Param1 IS NULL OR JExpense.IdAgWhere=@Param1)


Я думаю что на вопрос Кто "пропустило"?, отвечать не буду, думаю так все знают что я имел ввиду, а по поводу второго вопроса, я не стал эксперементировать, первый вариант попробывал (
(@Param1 is null or JExpense.IdAgWhere = @Param1)
) пишит ошибку, сделел так как я привел в примере, возможно и так отработает но нет времени тренироватся

спасибо всем кто откликнулся
24 май 11, 12:49    [10699429]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
speckuznec
Member

Откуда:
Сообщений: 62
хотя было бы номного правильней сделать так как посоветовали
(@Param1 is null or JExpense.IdAgWhere = @Param1)
24 май 11, 12:53    [10699456]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить