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

Откуда:
Сообщений: 5
Здравствуйте, необходимо написать функцию возвращающую число мужчин и женщин. Как я понял, скалярные функции возвращают только 1 значение, а табличные функции выводят данные из таблиц, не проводя вычислений для возвращаемой таблицы. Так какую тогда функцию использовать для подобных ситуаций, когда необходимо выводить не 1 значение.
Все находится в одной таблице, столбец "Пол" содержит либо "М" либо "Ж". Необходимо просто вывести эти два подсчитанных значения. При данном коде вернет лишь последний return. Подскажите, пожалуйста, спасибо.
ALTER function [dbo].[personal2] ()
returns float
AS
begin
declare @m float, @j float
set @m = 
(select COUNT(*) from СОТРУДНИКИ where Пол= 'М')
set @j = 
(select COUNT(*) from СОТРУДНИКИ where Пол= 'Ж')
return (@m)
return (@j)
end  
21 ноя 19, 15:21    [22021887]     Ответить | Цитировать Сообщить модератору
 Re: как правильно написать функцию?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
sk187,

так же, только returns table
и
return (select @m m, @j j)
21 ноя 19, 15:29    [22021900]     Ответить | Цитировать Сообщить модератору
 Re: как правильно написать функцию?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
sk187,
CREATE FUNCTION dbo.F()
RETURNS TABLE
AS
RETURN
SELECT
	Male	= SUM(CASE WHEN Пол= 'М' THEN 1 ELSE 0 END),
	Female	= SUM(CASE WHEN Пол= 'Ж' THEN 1 ELSE 0 END) 
FROM СОТРУДНИКИ
GO


а returns float это если вдруг не совсем м/ж?
21 ноя 19, 15:29    [22021902]     Ответить | Цитировать Сообщить модератору
 Re: как правильно написать функцию?  [new]
sk187
Member

Откуда:
Сообщений: 5
Владислав Колосов,
Спасибо!
21 ноя 19, 15:39    [22021911]     Ответить | Цитировать Сообщить модератору
 Re: как правильно написать функцию?  [new]
sk187
Member

Откуда:
Сообщений: 5
TaPaK,
Спасибо!
float это да, на будущее)
21 ноя 19, 15:40    [22021912]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить