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

Вниз

Как составить запрос   Найти похожие ветки 

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

Наверх




Память: 0.5 MB
Время: 0.02 c
2-1199350168
Xmen
2008-01-03 11:49
2008.02.03
Error while posting updates


6-1179421883
maker
2007-05-17 21:11
2008.02.03
Запросы принимаемые CGI


1-1192691199
Alex_Ne
2007-10-18 11:06
2008.02.03
Вызов MDICild-формы из Dll


2-1198248676
botaniQ
2007-12-21 17:51
2008.02.03
Ошибка "has encountered a problem and needs to close..."


8-1173018362
Quelle
2007-03-04 17:26
2008.02.03
Градиент