Форум: "Базы";
Текущий архив: 2002.10.21;
Скачать: [xml.tar.bz2];
ВнизSQL-запрос с having Найти похожие ветки
← →
Fishka (2002-09-24 12:04) [0]Запрос вида:
select DATA, VIL_OPER, sum(VIL_OB)
from "C:\aa.dbf"
group by DATA,VIL_OPER
having sum(VIL_OB)-VIL_OPER>1
выдает некорректный результат.
Возникает вопрос: можно ли использовать в предложении HAVING значение поля группировки VIL_OPER (заранее известно, что в группе значение VIL_OPER одно и то же)?
← →
ЮЮ (2002-09-25 06:15) [1]>выдает некорректный результат.
не ожидаемый тобой результат не есть некорректный. Подробнее, какие данные есть и что хочешь получить?
← →
Fishka (2002-09-25 09:04) [2]В каждой группе проставлено одно и то же значение VIL_OPER.
Мне нужно выбрать все группы, в которых сумма по полю VIL_OB больше, чем значение поля VIL_OPER на 1.
В итоге я получаю значения, у которых, например,
sum(VIL_OB)-VIL_OPER=0.00
← →
ЮЮ (2002-09-25 11:48) [3]>В итоге я получаю значения, у которых, например, sum(VIL_OB)-VIL_OPER=0.00
так получаешь или нет? :-)
Группа это что? Записи с одинаковой DATA и VIL_OPER?
Допустим есть записи
01.01.01 12 3
01.01.01 12 4
01.01.01 12 10
02.01.01 12 2
02.01.01 12 2
02.01.01 12 10
02.01.01 14 10
Ты хочешь получить именно это?
01.01.01 12 17
02.01.01 12 14
← →
Fishka (2002-09-25 13:01) [4]Да, именно это. Но этого я не получаю.
(Запись: 02.01.01 14 10 - такой записи не может быть, т.к. в группе значение VIL_OPER одинаково).
← →
Fishka (2002-09-26 10:48) [5]Хочется получить ответ на вопрос:
можно ли использовать в предложении HAVING значение поля группировки?
← →
Fishka (2002-09-30 11:57) [6]Может, кто-нибудь в предложении HAVING использовал значение поля группировки? Можно ли это сделать?
← →
passm (2002-09-30 12:18) [7]Попробуй, вдруг получится:
SELECT T1.DATA, T1.VIL_OPER, T1.SUM_VIL_OB
FROM (SELECT Q1.DATA, Q1.VIL_OPEN, SUM(VIL_OB) AS SUM_VIL_OB
FROM "C:\aa.dbf" AS Q1
GROUP BY Q1.DATA, Q1.VIL_OPER) AS T1
WHERE T1.SUM_VIL_OB - T1.VIL_OPER > 1
← →
Johnmen (2002-09-30 13:33) [8]>Fishka (30.09.02 11:57)
Можно ! Можно !
Запрос (24.09.02 12:04) корректен и работает правильно.
← →
Fishka (2002-09-30 15:27) [9]>passm © (30.09.02 12:18)
Конструкция SELECT ...FROM (SELECT ...) не проходит с dbf-файлами.
Johnmen © (30.09.02 13:33)
Запрос может и корректен, но результат запроса неверный.
← →
Johnmen (2002-09-30 15:38) [10]Результат запроса верный, т.е. полностью соответствует ожидаемому !
Если у тебя не так, то что-то ты недоговариваешь или делаешь неправильно.
← →
roottim (2002-09-30 15:54) [11]навскидку попробуй
select DATA, VIL_OPER, sum(VIL_OB)
from "C:\aa.dbf"
group by DATA,VIL_OPER
having sum(VIL_OB)-max(VIL_OPER)>1
← →
Fishka (2002-09-30 16:58) [12]>Johnmen © (30.09.02 15:38)
Если есть время и желание, то можете попробовать создать DBF файлик и сделать запрос такого вида.
>roottim (30.09.02 15:54)
Спасибо за совет, такой вариант запроса выдает верный результат.
← →
Johnmen (2002-09-30 17:12) [13]Все уже попробовано и работает...
А вот дальше интересно...
Сначала ты хотелhaving sum(VIL_OB)-VIL_OPER>1
Теперь тебя устраиваетhaving sum(VIL_OB)-max(VIL_OPER)>1
Думаю, не надо объяснять, что это разные вещи с разным результатом.
← →
Johnmen (2002-09-30 17:19) [14]Виноват...Вещи разные, но результат один !
← →
Fishka (2002-10-01 09:04) [15]Fishka (24.09.02 12:04)
заранее известно, что в группе значение VIL_OPER одно и то же
К сожалению, вещи разные, и результат разный.
Вы создали файлик и сделали запрос такого типа?
Или это просто рассуждения, теория?
← →
Johnmen (2002-10-01 09:55) [16](... having sum(VIL_OB)-VIL_OPER>1 )
1. Пробовал на реальной таблице IB-шной базы. (все Ок !)
2. Стандарт SQL92 не запрещает таких ограничений на группу.
3. Видимо, dBase, FoxPro не поддерживают такой синтаксис...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.10.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c