Форум: "Базы";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
ВнизЗапрос в несколько проходов Найти похожие ветки
← →
BBCHa © (2006-02-01 10:03) [0]Друзья поможите плз.
Есть табличка с полями: Дата, Клиент, Статус
Статус может быть 1 или 2 или 3
На выходе нужнол получить табличку с полями: Месяц, Клиент, Кол-во статусов=1, Кол-во статусов=2, Кол-во статусов=3
Всего пять столбцов.
Посдкажи те плз, можно ли это вообще реализовать??? И как?:)
Заранее благодарен.
← →
msguns © (2006-02-01 10:15) [1]>можно ли это вообще реализовать???
легко
>И как?
- Одним "хитрым" запросом
- Несколькими запросами и одной временной таблицей
- Все замутить на клиенте, "перебрав" все записи таблицы в цикле и заполнив, например, TStringGrid или CDS+DBGrid "нужного" вида
- Засобачить в акцесе макрос и запускать его из приложения
- Вырвать из левой ноздри три волоса, дунуть-плюнуть на них, сказать "карабарас", повернуться на север и три раза поклониться ;))
← →
DELORAC © (2006-02-01 10:51) [2]А что, у студентов сессия опять началась?
Самому подумать влом?
Вместо вопроса написал бы лучше запрос...
Вот пример для 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 11:03) [3]>DELORAC © (01.02.06 10:51) [2]
>Вот пример для Oracle, подозреваю что у тебя какой-нибудь MS SQL или MySQL
Зачем подозревать, если можно прочитать ? Акцес у него.
Судя по вопросу, "перевести" твой запрос он будет не в состоянии ;)
← →
BBCHa © (2006-02-01 12:15) [4]Большое спасибо, друзья, за помощь и поддержку.
Студенты и сессия тут не при чем, г-н DELORAC, если бы самому было думать влом я бы этим и не занимался. Тем не менее спасибо за помощь.
Г-н msguns, не судя по вопросу перевести запрос я смог, а Вам рекомендую - если нет конкретного ответа на вопрос, лучше помолчать, внушительнее смотрится.
Все такие умные... жаль подарить нечего и патроны кончились...
← →
msguns © (2006-02-01 12:33) [5]>BBCHa © (01.02.06 12:15) [4]
>Г-н msguns, не судя по вопросу перевести запрос я смог, а Вам рекомендую - если нет конкретного ответа на вопрос, лучше помолчать, внушительнее смотрится.
Я дал 4 (четыре) конкретных ответа на заданный вопрос
Вам рекомендую вопросы задавать четко и ясно, чтобы у отвечающих не создавалось впечатления неясности либо двойственности, либо не задавать вообще - не так по-идиотски будете смотреться.
← →
Кщд © (2006-02-01 12:38) [6]substr(to_char(Dat,"dd.mm.yyyy"),4,2) != to_char(Dat, "MM") ?
и зачем to_number?
и не sum, а count
← →
evvcom © (2006-02-01 14:09) [7]
> На выходе нужнол получить табличку с полями: Месяц, Клиент,
А год что? Не интересует?
> to_number(substr(to_char(Dat,"dd.mm.yyyy"),4,2)) month,
Еще Trunc имеется в оракле.
← →
DELORAC © (2006-02-01 17:11) [8]
> [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-02 09:13) [9]
> 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 ...
, а если отображать нужно только месяц, то это уже настраивается на клиенте.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.04 c