Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.21;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.016 c
3-68619
mer
2002-09-27 11:30
2002.10.21
работа с TupdateSQL


14-68959
kronprince
2002-09-27 13:10
2002.10.21
Подсел на песенку


1-68749
nick_vstu
2002-10-11 14:10
2002.10.21
День недели...


14-68936
Ricks
2002-09-20 17:30
2002.10.21
Warcraft III


7-69046
maxim2
2002-08-13 13:39
2002.10.21
Можно ли заблокировать правую кнопку мыши?