Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как создать запрос или хранимую процедуру? / 14 сообщений из 14, страница 1 из 1
15.10.2002, 10:44:22
    #32058257
vvzahar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать запрос или хранимую процедуру?
Имеется таблица со столбцами Dat, A, B. Как в зависимости от столбца Dat (например < 31.12.2001) выводить в случае истины А+В, в случае лжи А-В. Инструкции IIf, IF я что-то не могу правильно написать.
...
Рейтинг: 0 / 0
15.10.2002, 10:50:01
    #32058260
Rom
Rom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать запрос или хранимую процедуру?
select case when Dat<31.12.2001 then A+B else A-B end
from ...............
...
Рейтинг: 0 / 0
15.10.2002, 10:55:13
    #32058266
AAron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать запрос или хранимую процедуру?
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT
    res = case
        when DAT > cast('2001-12-31' as datetime) then A - B
        else A + B
        end
FROM tbl


Я думаю, так должно работать
...
Рейтинг: 0 / 0
15.10.2002, 11:18:48
    #32058288
vvzahar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать запрос или хранимую процедуру?
А как представить результат вычисления формулы по условию новому столбцу запроса или хранимой процедуры?
...
Рейтинг: 0 / 0
15.10.2002, 13:09:56
    #32058343
AAron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать запрос или хранимую процедуру?
подставь в качестве нового столбца все, начиная с case и заканчивая end
...
Рейтинг: 0 / 0
15.10.2002, 14:01:25
    #32058376
vvzahar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать запрос или хранимую процедуру?
Допускает ли инструкция WHEN THEN ELSE внутреннее внутреннее вложение такой же инструкции
WHEN THEN (WHEN THEN ELSE) ELSE при использовании снаружи CASE END. Если да то какой синтаксис?
...
Рейтинг: 0 / 0
15.10.2002, 14:15:25
    #32058382
akuz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать запрос или хранимую процедуру?
CASE field1 WHEN 1
THEN (CASE field2 WHEN 1 THEN 0 ELSE 1 END)
ELSE 0
END
...
Рейтинг: 0 / 0
15.10.2002, 14:37:31
    #32058392
Bzzzzz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать запрос или хранимую процедуру?
Кроме CASE можно еще и
Код: plaintext
1.
2.
3.
select A+B from ... where Date > '20020101'
union 
select A-B from ... where Date < '20020101'
...
Рейтинг: 0 / 0
15.10.2002, 15:10:01
    #32058416
vvzahar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать запрос или хранимую процедуру?
Нужно накладывать одновременно два условия на столбец вычисляемых выражений:
- зависимость от даты (использовать разные формулы);
- проверка знаменателя на деление на ноль (если знаменатель равен нулю, результат вычислений также приравнивать нулю).
...
Рейтинг: 0 / 0
15.10.2002, 15:31:59
    #32058426
AAron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать запрос или хранимую процедуру?
давай лучше сделаем немного по другому...
опиши сначала задачу, а затем попробуем подсказать, как ее лучше решить.
Например обойти деление на 0 и присвоить результат можно и другим способом

SELECT res = isnull( a / nulllif(b, 0), 0 )

в этом случае, при установки b в 0, результат будет заменен на null. результат любого вычисления с использованием null даст тот же null. А затем результирующий isnull заменит null на 0. Что и требовалось
...
Рейтинг: 0 / 0
15.10.2002, 15:47:19
    #32058446
vvzahar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать запрос или хранимую процедуру?
Имеется таблица со столбцами ID, Dat (Дата), A (Число), B (Число), C (Число). Необходимо создать запрос или хранимую процедуру (что лучше в этом случае?) содержащий столбцы ID, Koef. Где Koef = (A+B)/C если дата <= 1999-12-31, Koef = A/C если дата > 1999-12-31. То есть нужно обработать одновременно и условие на дату, и проверку на деление на ноль. Если деление на ноль происходит, то выводить в столбец Koef ноль. В дальнейшем этот запрос или хранимую процедуру планируется использовать в качестве источника данных для построения отчета через Crystal Report.
...
Рейтинг: 0 / 0
15.10.2002, 18:27:01
    #32058527
Ax
Ax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать запрос или хранимую процедуру?
А нельзя в конструкторе вьюеров SQL-SRV поиграться, он сам и текст оптимальной строки SQL выдаст.
IMHO.
...
Рейтинг: 0 / 0
16.10.2002, 08:41:27
    #32058613
vvzahar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать запрос или хранимую процедуру?
А что такое конструктор вьюеров SQL-SRV? Если это то, что вызывается через View - Design, то условия там необходимо в ручную писать.
...
Рейтинг: 0 / 0
16.10.2002, 09:49:50
    #32058633
Bzzzzz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать запрос или хранимую процедуру?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select ID, case C when  0  then  0 
else (A+B)/C 
end as Koef
from ... 
where Date !> '19991231'
union 
select ID, case C when  0  then  0 
else A/C 
end as Koef
from ... 
where Date > '20020101'
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как создать запрос или хранимую процедуру? / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]