powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с функцией
8 сообщений из 8, страница 1 из 1
Проблема с функцией
    #39893640
sk187
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, подскажите пожалуйста, как поправить функцию. Необходимо написать функцию, выдающую фонд ЗП подразделения. В фонд входит оклад и индивидуальные надбавки сотрудников.
То есть вводится номер подразделения и выдается данная сумма. Оклад и надбавки находятся в разных таблицах соответственно. НО проблема со вторым SUM, выдает ошибку, можно ли вообще так через "+" добавлять "SUM"? или может другой тип функции нужно использовать?
Код: sql
1.
2.
3.
4.
5.
6.
7.
create function fond(@kod int)
returns table 
AS
return 
select
Фонд= SUM(Оклад)from ШТАТНОЕ_РАСПИСАНИЕ where ШТАТНОЕ_РАСПИСАНИЕ.КодПодразделения = @kod 
+ SUM (Надбавка) from РАБОТА where РАБОТА.КодПодразделения = @kod
...
Рейтинг: 0 / 0
Проблема с функцией
    #39893643
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sk187
или может другой тип функции нужно использовать?
И другой тип функции нужен, и запросы нужно учиться писать.

В запросах поэкспериментируйте со скобочками в подзапросах, а функция вам нужна скалярная.
...
Рейтинг: 0 / 0
Проблема с функцией
    #39893647
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
create function fond(@kod int)
returns table 
AS
return 
select
 Фонд =
  (select isnull(SUM(Оклад), 0)from ШТАТНОЕ_РАСПИСАНИЕ where ШТАТНОЕ_РАСПИСАНИЕ.КодПодразделения = @kod) +
  (select isnull(SUM(Надбавка), 0) from РАБОТА where РАБОТА.КодПодразделения = @kod)
...
Рейтинг: 0 / 0
Проблема с функцией
    #39893658
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

SUM игнорирует null-ы можно не делать дополнительной проверки с подстановкой.
...
Рейтинг: 0 / 0
Проблема с функцией
    #39893662
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShIgor
SUM игнорирует null-ы можно не делать дополнительной проверки с подстановкой.
Читайте что такое скалярный агрегат и что будет возвращено для SUM, если нет строк, удовлетворяющих критериям отбора.
...
Рейтинг: 0 / 0
Проблема с функцией
    #39893687
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

можно ссылку на документацию от MS, не нахожу где поподробнее почитать..
умом-то понимаю, что сумма по отсутствующему набору будет нулл и это вроде логично, а вот то что если записи есть, но все значения в этом поле будут null, то результат тоже будет null не совсем понятно.
...
Рейтинг: 0 / 0
Проблема с функцией
    #39893700
sk187
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,
Спасибо, заодно узнал полезную информацию по ISNULL и SUM
...
Рейтинг: 0 / 0
Проблема с функцией
    #39893706
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShIgor
умом-то понимаю, что сумма по отсутствующему набору будет нулл и это вроде логично, а вот то что если записи есть, но все значения в этом поле будут null, то результат тоже будет null не совсем понятно
В принципе первого же достаточно, что бы писать isnull

А второе - явного описания я не нашёл, но в принципе, если значений вообще нет, то и суммы нет.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с функцией
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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