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

Откуда:
Сообщений: 166
	CASE @paid
		WHEN 1 THEN
		/*if @paid=1*/
		begin
		SELECT     dbo.orders.name, dbo.sales.FIOmotivation, Sum(dbo.sales.motiv_sum) as motiv_sum, sellers.[number]
		 FROM        dbo.sellers INNER JOIN (dbo.sales INNER JOIN
	                 dbo.orders ON dbo.sales.orderNumber = dbo.orders.[order]) ON sellers.sallername = sales.FIOmotivation
		WHERE (payDate BETWEEN @startDate and @endDate) 
		AND dbo.sales.motiv_sum>0 
		AND FIOmotivation is not null
		AND sellers.number Is Not Null
		AND motivDate Is Null
		GROUP BY name, FIOmotivation, sellers.[number]
		end
		WHEN 2 THEN
		/*else*/
		begin
		 SELECT     dbo.orders.name, dbo.sales.FIOmotivation, Sum(dbo.sales.motiv_sum) as motiv_sum
		 FROM        dbo.sellers INNER JOIN (dbo.sales INNER JOIN
	                 dbo.orders ON dbo.sales.orderNumber = dbo.orders.[order]) ON sellers.sallername = sales.FIOmotivation
		WHERE (payDate BETWEEN @startDate and @endDate) 
		AND dbo.sales.motiv_sum>0 
		AND FIOmotivation is not null
		AND sellers.number Is Not Null
		GROUP BY name, FIOmotivation
		end
		END

Чтобы не мучаться с if, можно ли сделать управление ветвление алгоритма через CASE? Сейчас у меня ругается.
5 ноя 09, 11:30    [7884444]     Ответить | Цитировать Сообщить модератору
 Re: Управляющий CASE  [new]
Glory
Member

Откуда:
Сообщений: 104760
MoRoZoFF

Чтобы не мучаться с if, можно ли сделать управление ветвление алгоритма через CASE? Сейчас у меня ругается.

А в хелпе разве не написано, что CASE только в запросах ?
5 ноя 09, 11:35    [7884484]     Ответить | Цитировать Сообщить модератору
 Re: Управляющий CASE  [new]
DENIS_CHEL
Member

Откуда:
Сообщений: 23097
Простите, кто ругается? Текст увидеть можно или он совсем нецензурный?

---------------------------------------------------------
- Ну вы тут и нафлудили! - сказал Геракл, зайдя на Авгиев форум..
5 ноя 09, 11:35    [7884488]     Ответить | Цитировать Сообщить модератору
 Re: Управляющий CASE  [new]
nrg_fly
Member

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

исправьте ваш кейз на иф, и тогда думаю, что парсер ругаться не будет.
6 ноя 09, 10:24    [7889857]     Ответить | Цитировать Сообщить модератору
 Re: Управляющий CASE  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
Кейс не оперирует резултсетами. Поэтому только ИФ.
6 ноя 09, 14:50    [7892387]     Ответить | Цитировать Сообщить модератору
 Re: Управляющий CASE  [new]
DronVS
Member

Откуда:
Сообщений: 41
SELECT dbo.orders.name, dbo.sales.FIOmotivation, Sum(dbo.sales.motiv_sum) as motiv_sum,
case when @paid = 1 then sellers.[number] else 0 end as number

FROM dbo.sellers INNER JOIN (dbo.sales INNER JOIN
dbo.orders ON dbo.sales.orderNumber = dbo.orders.[order]) ON sellers.sallername = sales.FIOmotivation
WHERE (payDate BETWEEN @startDate and @endDate)
AND dbo.sales.motiv_sum>0
AND FIOmotivation is not null
AND sellers.number Is Not Null
AND motivDate Is Null
GROUP BY name, FIOmotivation, sellers.[number], case when @paid = 1 then sellers.[number] else 0 end
6 ноя 09, 15:29    [7892803]     Ответить | Цитировать Сообщить модератору
 Re: Управляющий CASE  [new]
MoRoZoFF
Member

Откуда:
Сообщений: 166
Да, а если хочется в одной процедуре получить более двух резултсетов, то получится веселая логика с ифами. Спасибо.
25 ноя 09, 10:37    [7974653]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить