Форум: "Начинающим";
Текущий архив: 2008.02.03;
Скачать: [xml.tar.bz2];
ВнизКак составить запрос Найти похожие ветки
← →
man Yurik (2008-01-04 12:24) [0]Есть таблица(склад).В ней поля -
дата
получена/выписана
название детатали.
Немогу составить запрос который бы выдал следующий результат: (т.е. необходимо для конкретной детали получить сколько получено/выписано в день)
дата | кол-во получ детал | кол-во выписан детал | назв детали
Заранее благодарен за ответ.
← →
Sergey13 © (2008-01-04 12:43) [1]Из Firebird_v1.5.5.ReleaseNotes.pdf
SELECT
o.ID,
o.Description,
CASE
WHEN (o.Status IS NULL) THEN "new"
WHEN (o.Status = 1) THEN "confirmed"
WHEN (o.Status = 3) THEN "in production"
WHEN (o.Status = 4) THEN "ready"
WHEN (o.Status = 5) THEN "shipped"
ELSE "unknown status """ || o.Status || """"
END
FROM Orders o;
Наверное должно помочь.
← →
Johnmen © (2008-01-04 14:44) [2]Изучай документацию по SQL на предмет агрегатной функции COUNT и предиката GROUP BY. Ещё наверное CASE WHEN понадобится, но про это уже сказали.
← →
man Yurik (2008-01-04 15:50) [3]Спасибо за ответ, но надо получить оборот детали (пришло|ушло) за день
т.е.
дата | кол-во получ детал | кол-во выписан детал | назв детали
Я вот и пытаюсь выполнить запрос типаselect a.date, count(a.in_out), count(a.in_out), a.componentname
from sklad a join sklad b on a.date=b.date
where
a.componentname=b.componentname and
a.in_out="O" and b.in_out="I"
group by 1,2
Результаты не впечатляют -((( может кто укажет где ошибка
← →
man Yurik (2008-01-04 16:21) [4]Извиняюсь запрос выглядит без опечаток так
select a.date, count(a.in_out), count(b.in_out), a.componentname
from sklad a join sklad b on a.date=b.date
where
a.componentname=b.componentname and
a.in_out="O" and b.in_out="I"
group by 1,4
← →
Iskander © (2008-01-04 17:06) [5]
> Результаты не впечатляют
Вообще-то не результаты, а твой запрос не впечатляетselect a.componentname, a.date,
(select count(*) from sklad b1 where
b1.componentname = a.componentname
and b1.date = a.date
and b1.in_out="O") as out_count,
(select count(*) from sklad b1 where
b1.componentname = a.componentname
and b1.date = a.date
and b1.in_out="I") as in_count
from sklad a
group by a.componentname, a.date
Поправьте меня, мне протестить негде ...
← →
man Yurik (2008-01-04 17:17) [6]Согласен с Вами - мой запрос не впечатляет...-(( Ваш коректно работает. Спасибо всем за внимание
← →
Johnmen © (2008-01-04 17:18) [7]
> Результаты не впечатляют
Что это значит?
Уже ж было сказано про CASE. Думалку включаем, да...:)
← →
Johnmen © (2008-01-04 17:20) [8]Iskander © (04.01.08 17:06) [5]
Вот так писАть в данном случае не рекомендую. Это тормоза.
← →
Iskander © (2008-01-04 17:33) [9]select a.componentname, a.date,
count(CASE in_out WHEN "O" THEN "O" ELSE NULL END) as out_count,
count(CASE in_out WHEN "I" THEN "I" ELSE NULL END) as in_count
from sklad a
group by a.componentname, a.date
← →
Johnmen © (2008-01-04 17:41) [10]Вообще-то предполагалось, что автор ветки думать начнет...
← →
man Yurik (2008-01-04 19:46) [11]Попробую переделать в процедуру...
← →
man Yurik (2008-01-04 19:58) [12]Мда, пожалуй мне действително лучше ReleaseNotes.pdf для FB
Всем спасибо за пинок... Большое - Iskander
← →
Johnmen © (2008-01-04 20:28) [13]Вот так всегда, пинаешь аффтара, пинаешь, а спасибо за пинок всегда добрым дядям с медвежьей услугой, или по-другому, штрейкбрехерам.
Куда катится мир? Откуда в нем столько пустоголовых ленивцев и истинных несомненных гениев?
← →
sniknik © (2008-01-04 20:51) [14]> и истинных несомненных гениев?
типа нас тобой? ;о)
← →
Johnmen © (2008-01-04 21:49) [15]
> sniknik © (04.01.08 20:51) [14]
> типа нас тобой? ;о)
Нет. Типа Iskander ©
:)))
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.02.03;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.112 c