Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Переписать запрос / 5 сообщений из 5, страница 1 из 1
24.05.2006, 15:41
    #33748909
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переписать запрос
Господа, как бы переписать запрос такого вида (запрос мягко говоря сильно упрощён)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create table #t (id int)

insert into #t select  1  union select  2 

select sum(
case when exists (select * from #t where ID = t.ID) 
then  10 
else
 0 
end 
)
from #t t

drop #t

те надо получить сумму, в данном синтаксисе ругается на подзапрос в агрегирующей ф-ии SUM().
...
Рейтинг: 0 / 0
24.05.2006, 15:45
    #33748932
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переписать запрос
Пардон, ребята - ошибся форумом.
...
Рейтинг: 0 / 0
24.05.2006, 15:46
    #33748934
Проходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переписать запрос
В приведенном коде фильтрация cуммируемых значений происходит с помощью case.
Напрашивается сделать эту фильтрацию в where и суммировать уже отфильтрованные данные, то есть только уже готовые десятки.
...
Рейтинг: 0 / 0
24.05.2006, 15:48
    #33748945
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переписать запрос
Надо понимать, это вопрос по MS SQL?

Насколько я в курсе, аггрегирующие функции в MS SQL 2000 не поддерживают внутри себя подзапросы. Т.е. ругань будет даже на такую конструкцию

Код: plaintext
SELECT SUM(SELECT F1 FROM MyTab) FROM MyTab

Выход только в дополнительном подзапросе. Либо 2 последовательных, либо один в одном:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT SUM(tmpTab.NewValue)
FROM (
	SELECT
		CASE WHEN exists (select * from #t where ID = t.ID) 
		THEN  10 
		ELSE
		 0 
		END as NewValue
	FROM #t
) as tmpTab
...
Рейтинг: 0 / 0
24.05.2006, 16:21
    #33749104
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переписать запрос
ВладимирМНадо понимать, это вопрос по MS SQL?


Да, Владимир - машинально нажал новое сообщение

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


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