Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с функцией / 8 сообщений из 8, страница 1 из 1
24.11.2019, 18:43
    #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
24.11.2019, 19:02
    #39893643
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с функцией
sk187
или может другой тип функции нужно использовать?
И другой тип функции нужен, и запросы нужно учиться писать.

В запросах поэкспериментируйте со скобочками в подзапросах, а функция вам нужна скалярная.
...
Рейтинг: 0 / 0
24.11.2019, 19:28
    #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
24.11.2019, 20:09
    #39893658
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с функцией
invm,

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

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

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


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