powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как создать запрос или хранимую процедуру?
14 сообщений из 14, страница 1 из 1
Как создать запрос или хранимую процедуру?
    #32058257
vvzahar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется таблица со столбцами Dat, A, B. Как в зависимости от столбца Dat (например < 31.12.2001) выводить в случае истины А+В, в случае лжи А-В. Инструкции IIf, IF я что-то не могу правильно написать.
...
Рейтинг: 0 / 0
Как создать запрос или хранимую процедуру?
    #32058260
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select case when Dat<31.12.2001 then A+B else A-B end
from ...............
...
Рейтинг: 0 / 0
Как создать запрос или хранимую процедуру?
    #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
Как создать запрос или хранимую процедуру?
    #32058288
vvzahar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как представить результат вычисления формулы по условию новому столбцу запроса или хранимой процедуры?
...
Рейтинг: 0 / 0
Как создать запрос или хранимую процедуру?
    #32058343
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подставь в качестве нового столбца все, начиная с case и заканчивая end
...
Рейтинг: 0 / 0
Как создать запрос или хранимую процедуру?
    #32058376
vvzahar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Допускает ли инструкция WHEN THEN ELSE внутреннее внутреннее вложение такой же инструкции
WHEN THEN (WHEN THEN ELSE) ELSE при использовании снаружи CASE END. Если да то какой синтаксис?
...
Рейтинг: 0 / 0
Как создать запрос или хранимую процедуру?
    #32058382
Фотография akuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CASE field1 WHEN 1
THEN (CASE field2 WHEN 1 THEN 0 ELSE 1 END)
ELSE 0
END
...
Рейтинг: 0 / 0
Как создать запрос или хранимую процедуру?
    #32058392
Bzzzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кроме CASE можно еще и
Код: plaintext
1.
2.
3.
select A+B from ... where Date > '20020101'
union 
select A-B from ... where Date < '20020101'
...
Рейтинг: 0 / 0
Как создать запрос или хранимую процедуру?
    #32058416
vvzahar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно накладывать одновременно два условия на столбец вычисляемых выражений:
- зависимость от даты (использовать разные формулы);
- проверка знаменателя на деление на ноль (если знаменатель равен нулю, результат вычислений также приравнивать нулю).
...
Рейтинг: 0 / 0
Как создать запрос или хранимую процедуру?
    #32058426
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
давай лучше сделаем немного по другому...
опиши сначала задачу, а затем попробуем подсказать, как ее лучше решить.
Например обойти деление на 0 и присвоить результат можно и другим способом

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

в этом случае, при установки b в 0, результат будет заменен на null. результат любого вычисления с использованием null даст тот же null. А затем результирующий isnull заменит null на 0. Что и требовалось
...
Рейтинг: 0 / 0
Как создать запрос или хранимую процедуру?
    #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
Как создать запрос или хранимую процедуру?
    #32058527
Ax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А нельзя в конструкторе вьюеров SQL-SRV поиграться, он сам и текст оптимальной строки SQL выдаст.
IMHO.
...
Рейтинг: 0 / 0
Как создать запрос или хранимую процедуру?
    #32058613
vvzahar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что такое конструктор вьюеров SQL-SRV? Если это то, что вызывается через View - Design, то условия там необходимо в ручную писать.
...
Рейтинг: 0 / 0
Как создать запрос или хранимую процедуру?
    #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
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как создать запрос или хранимую процедуру?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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