![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите составить хитрый запрос (Select) [Paradox]
_Oleg © (2005-01-24 23:21:00)Есть такая таблица:
ID | Data | ID1 | ID2 | Summa
Как составить запрос который был бы эквивалентен следующим запросам:
select data, id1,
count (distinct id2) as field1, sum(price) as field2
from mytable
group by data, id1
а потом на результаты 1 запроса:
select id1,
count (field1), sum(field2)
from results
group by id1
То есть следует подсчитывать кроме суммирования одного поля,
надо подсчитатать количсетво уникальных комбинаций Data + ID2
_Oleg (2005-01-25 14:47:00) [1]2Johnmen
Спасибо, Ваш вариант вроде работает правильно
select a.ID1,
count (distinct cast(a.data as varchar(10))+cast(a.id2 as varchar(10))) as p,
sum(a.price) as price from mytable a
group by ID1
Johnmen (2005-01-25 12:11:00) [2]
select count(distinct cast(data as varchar(100))+cast(id2 as varchar(100))) as YourCount, sum(price) as YourSum
from mytable
_Oleg (2005-01-25 11:44:00) [3]2Mutniy
Да, можно сохранить в промежуточную таблицу.
Но, к сожалению, мне надо - одним запросом.
Mutniy (2005-01-25 10:14:00) [4]Я правда вообще не работал с породоксом ,
но нелзя чтоль результат в первого запроса выбросить в промежуточную таблицу ?!
тоесть как в MSSQL сделать временную таблицу
_Oleg (2005-01-25 10:05:00) [5]В БДЕ администраторе показывает информацию о версии для dll - 5.2.0.2. Вроде это как последняя версия. Пробовал менять уровни таблиц для Paradox и DBASE на максимальные. Менял LocalShare. Не помогает.
sniknik (2005-01-25 08:27:00) [6]> В парадоксе, как его некоторые не ругают, есть такая фича, как вложенный запрос:
это не в парадоксе, это в BDE, формат таблицы не при чем выполняет запросы движок.
и не получается (возможно) у него потому что он использует другой движок (в принципе их для парадокса не много ;о)) но гадать все одно неохота (привел бы для второго варианта))
ЮЮ (2005-01-25 08:19:00) [7]Попробовал сам, всё работает. Запрос в SQL Explorer-e:
SELECT
Executor, Count(Ship) Ship, Sum(Pay) as Pay
FROM
"DateGrouped.sql"
GROUP BY
Executor
запрос в DateGrouped.sql:
SELECT
Accepted, Executor, Count(Ship) Ship, Sum(Pay) as Pay
FROM
Bills
LEFT JOIN BillDetails ON Bills.Id = BillDetails.BillId
GROUP BY
Accepted, Executor
_Oleg (2005-01-25 07:15:00) [8]К сожалению, не получилось
Пробовал в DataBase Desktop, SQL Explorer и в Delphi 5 через TQuery. Выдаёт "Opperation not applicable". Также пробовал менять двойные кавычки на одинарные, без результата :(
ЮЮ (2005-01-25 03:25:00) [9]В парадоксе, как его некоторые не ругают, есть такая фича, как вложенный запрос: первый запрос кладёшь в БД текстовом файле с расширением sql, например DateGrouped.sql, тогда второй запрос будет иметь вид:
SELECT id1, COUNT(field1) as Cnt, SUM(field2) as Summ
FROM "DateGrouped.sql"
GROUP by id1