Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Безвыходное положение. Помогите построить запрос.  [new]
rebroff
Member

Откуда:
Сообщений: 77
Доброе утро всем. Вопрос к тем, кто силён в SQL. Помогите, пожалуйста, построить запрос. В таблице есть поля:nomer, vid,summa. Нужно сделать выборку записей, группируя по полю nomer, отвечающих следующему критерию:величина, равная разности сумм значений поля summa для vid равного 18,35 и 01, и сумм значений поля summa для vid равного 40, должна быть больше 1000. Каждая величина расчитывается в пределах группы по полю nomer. Я-новичок в этом. Уже голова квадратная, а ничего не выходит.:)
20 окт 06, 09:42    [3285727]     Ответить | Цитировать Сообщить модератору
 Re: Безвыходное положение. Помогите построить запрос.  [new]
rbs
Guest
SELECT nomer, SUM(IIF(INLIST(vid,18,35,01),summa,0)) - SUM(IIF(INLIST(vid,40),summa,0)) ;
FROM TEST ;
GROUP BY nomer ;
HAVING SUM(IIF(INLIST(vid,18,35,01),summa,0)) - SUM(IIF(INLIST(vid,40),summa,0)) > 1000
20 окт 06, 09:57    [3285815]     Ответить | Цитировать Сообщить модератору
 Re: Безвыходное положение. Помогите построить запрос.  [new]
rebroff
Member

Откуда:
Сообщений: 77
2rbs
Дай тебе Бог здоровья, добрый человек:)
20 окт 06, 10:00    [3285840]     Ответить | Цитировать Сообщить модератору
 Re: Безвыходное положение. Помогите построить запрос.  [new]
rebroff
Member

Откуда:
Сообщений: 77
Облом."Capability not supported". Работаю через BDE.
20 окт 06, 10:37    [3286114]     Ответить | Цитировать Сообщить модератору
 Re: Безвыходное положение. Помогите построить запрос.  [new]
rbs
Guest
А причем тут VFP?
Указанный запрос работает для VFP9
20 окт 06, 11:47    [3286783]     Ответить | Цитировать Сообщить модератору
 Re: Безвыходное положение. Помогите построить запрос.  [new]
rebroff
Member

Откуда:
Сообщений: 77
Таблица в формате фокспро. А связываюсь через BDE. который. как я понял не особо дружит с TSQL. Возможно ли выполнить такую выборку одним запросом через BDE?
20 окт 06, 11:52    [3286842]     Ответить | Цитировать Сообщить модератору
 Re: Безвыходное положение. Помогите построить запрос.  [new]
rbs
Guest
Насчет BDE ничего сказать не могу.
20 окт 06, 11:55    [3286868]     Ответить | Цитировать Сообщить модератору
 Re: Безвыходное положение. Помогите построить запрос.  [new]
__Jet__
Member

Откуда:
Сообщений: 26
Здорово!
Попробуй этот вариант, думаю это то, что нужно.
Тестировал на курсоре

MyTable
--------------------------------------------------------------------
| Nomer (тип Integer) | Vid (тип Character) | nSumma (тип Numeric) |
--------------------------------------------------------------------

SELECT
  SubResult.Nomer,
  SubResult.MyCalc
FROM
  (SELECT Res.Nomer,
    (SELECT SUM(SubRes1.nSumma) FROM MyTable as SubRes1
    WHERE
      SubRes1.Nomer = Res.Nomer AND
      (SubRes1.Vid = '01' OR SubRes1.Vid = '18' OR SubRes1.Vid = '35')) - 
    (SELECT SUM(SubRes2.nSumma) FROM MyTable as SubRes2
    WHERE
      SubRes2.Nomer = Res.Nomer AND SubRes2.Vid = '40'
    ) as MyCalc
  FROM MyTable as Res
GROUP BY Res.Nomer
  ) as SubResult
WHERE
SubResult.MyCalc > 1000

Удачи! :-)
20 окт 06, 12:59    [3287438]     Ответить | Цитировать Сообщить модератору
 Re: Безвыходное положение. Помогите построить запрос.  [new]
rebroff
Member

Откуда:
Сообщений: 77
2_jet_
Пасиба, мой далёкий друг. Немножко доработал, но в смысле идеи-действительно то, что нужно.
24 окт 06, 13:33    [3301742]     Ответить | Цитировать Сообщить модератору
 Re: Безвыходное положение. Помогите построить запрос.  [new]
__Jet__
Member

Откуда:
Сообщений: 26
Пожалуйста! :-)
24 окт 06, 19:06    [3304666]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить