![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запрос в несколько проходов [D5, Access]
BBCHa © (2006-02-01 10:03:00)Друзья поможите плз.
Есть табличка с полями: Дата, Клиент, Статус
Статус может быть 1 или 2 или 3
На выходе нужнол получить табличку с полями: Месяц, Клиент, Кол-во статусов=1, Кол-во статусов=2, Кол-во статусов=3
Всего пять столбцов.
Посдкажи те плз, можно ли это вообще реализовать??? И как?:)
Заранее благодарен.
evvcom (2006-02-02 09:13:00) [1]
> to_number(substr(to_char(Trunc(Dat),'dd.mm.yyyy'),4,2))
> month,
Здесь Trunc лишний. Если все же через ж. делать, то так проще:
to_number(to_char(Dat,'mm'))
Но скорее всего автору также нужен и год, хотя он может и не догадывается об этом. Тогда достаточно просто
select Trunc(Dat, 'MONTH') from ..., а если отображать нужно только месяц, то это уже настраивается на клиенте.
DELORAC (2006-02-01 17:11:00) [2]
> [6] Кщд
1. to_number- чтобы был номер, а не строка, мало ли, что там понадобиться
2. конечно же count, как-то не заметил, что набрал...
------------------
> [7] evvcom © (01.02.06 14:09)
Упсс... Конечно же еще и Trunc:
to_number(substr(to_char(Trunc(Dat),'dd.mm.yyyy'),4,2)) month,
;-))
evvcom (2006-02-01 14:09:00) [3]
> На выходе нужнол получить табличку с полями: Месяц, Клиент,
А год что? Не интересует?
> to_number(substr(to_char(Dat,'dd.mm.yyyy'),4,2)) month,
Еще Trunc имеется в оракле.
Кщд (2006-02-01 12:38:00) [4]substr(to_char(Dat,'dd.mm.yyyy'),4,2) != to_char(Dat, 'MM') ?
и зачем to_number?
и не sum, а count
msguns (2006-02-01 12:33:00) [5]>BBCHa © (01.02.06 12:15) [4]
>Г-н msguns, не судя по вопросу перевести запрос я смог, а Вам рекомендую - если нет конкретного ответа на вопрос, лучше помолчать, внушительнее смотрится.
Я дал 4 (четыре) конкретныхответа на заданный вопрос
Вам рекомендую вопросы задавать четко и ясно, чтобы у отвечающих не создавалось впечатления неясности либо двойственности, либо не задавать вообще - не так по-идиотски будете смотреться.
BBCHa (2006-02-01 12:15:00) [6]Большое спасибо, друзья, за помощь и поддержку.
Студенты и сессия тут не при чем, г-н DELORAC, если бы самому было думать влом я бы этим и не занимался. Тем не менее спасибо за помощь.
Г-н msguns, не судя по вопросу перевести запрос я смог, а Вам рекомендую - если нет конкретного ответа на вопрос, лучше помолчать, внушительнее смотрится.
Все такие умные... жаль подарить нечего и патроны кончились...
msguns (2006-02-01 11:03:00) [7]>DELORAC © (01.02.06 10:51) [2]
>Вот пример для Oracle, подозреваю что у тебя какой-нибудь MS SQL или MySQL
Зачем подозревать, если можно прочитать ? Акцес у него.
Судя по вопросу, "перевести" твой запрос он будет не в состоянии ;)
DELORAC (2006-02-01 10:51:00) [8]А что, у студентов сессия опять началась?
Самому подумать влом?
Вместо вопроса написал бы лучше запрос...
Вот пример для Oracle, подозреваю что у тебя какой-нибудь MS SQL или MySQL, так что переводи сам...
select
to_number(substr(to_char(Dat,'dd.mm.yyyy'),4,2)) month,
Client,
sum(Decode(cl_status,1,cl_status,0)) cl_status_1,
sum(Decode(cl_status,2,cl_status,0)) cl_status_2,
sum(Decode(cl_status,3,cl_status,0)) cl_status_3
from
Table
group by
to_number(substr(to_char(Dat,'dd.mm.yyyy'),4,2)),
Client</CODE
msguns (2006-02-01 10:15:00) [9]>можно ли это вообще реализовать???
легко
>И как?
- Одним "хитрым" запросом
- Несколькими запросами и одной временной таблицей
- Все замутить на клиенте, "перебрав" все записи таблицы в цикле и заполнив, например, TStringGrid или CDS+DBGrid "нужного" вида
- Засобачить в акцесе макрос и запускать его из приложения
- Вырвать из левой ноздри три волоса, дунуть-плюнуть на них, сказать "карабарас", повернуться на север и три раза поклониться ;))