![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запрос к базе данных [D5, IB5.x]
softmaster © (2002-12-27 15:24:00)Народ, всем привет!
Подскажите: есть таблица , хранящая выписааные документы.Формат
Дата №док Клиент Сумма
12.12.02 1 Мишин 100
12.12.02 2 Мишин 50
12.12.02 3 Касса 200
12.12.02 4 Касса 30
Необходимо в отчете за 12.12.02 получить данные в таком формате
Дата № док Клиент Сумма
12.12.02 1 Мишин 100
12.12.02 2 Мишин 50
12.12.02 Касса 230
Т.е. мне необходимо объединять данные по КАССЕ и по дню, а другие выводить так как есть. Подскажите, как лучше подойти к этой задачке.Заранее благодарен за ответ.
softmaster (2002-12-27 21:01:00) [1]2 Delirium^.Tremens
2 passm
Ребята, огромное спасибо.
очень помогли
Delirium^.Tremens (2002-12-27 16:44:00) [2]
> Блин, сорри, 0 не заметил :-). Сразу за дату кинулся...
> спасибо.
> Адрес для пива черкни...
> :-)
Не стоит. Я сам дурканул, во втором запросе условие для даты добавил. Это потому что углядел ее в вопросе поздно. Главное то там было про 0, а я внимание твое рассеял.
passm (2002-12-27 16:42:00) [3]Delirium^.Tremens © (27.12.02 16:38)> После "общения" с Lady D я как пуганая ворона на куст ;))
softmaster (2002-12-27 16:39:00) [4]2 Delirium^.Tremens
Блин, сорри, 0 не заметил :-). Сразу за дату кинулся...
спасибо.
Адрес для пива черкни...
:-)
Delirium^.Tremens (2002-12-27 16:38:00) [5]Да ладно, я ж шучу.
passm (2002-12-27 16:37:00) [6]Delirium^.Tremens © (27.12.02 16:30)> Я не списывал. Просмотрел бегло твой запрос, увидел во втором запросе
> Group By data, ndoc, client
и не стал вникать.
Так уж вышло...
Delirium^.Tremens (2002-12-27 16:30:00) [7]passm © (27.12.02 16:20)>
Ты зачем у меня списываешь? И вот это почему так записано: CAST(NULL AS INTEGER) AS N_DOC,? Чем плоха моя запись (0 as ndoc)?
passm (2002-12-27 16:23:00) [8]passm © (27.12.02 16:20)> Да... для явной сортировки можно:
SELECT T.D_DATE, T.N_DOC, T.CLIENT, T.D_SUMM, 0 AS ORD_NUM
FROM TABLE1 AS T
WHERE T.CLIENT <> :CLENT_CASSA
UNION ALL
SELECT T.D_DATE, CAST(NULL AS INTEGER) AS N_DOC, T.CLIENT, SUM(T.D_SUMM) AS D_SUMM, 1 AS ORD_NUM
FROM TABLE1 AS T
WHERE T.CLIENT = :CLENT_CASSA
GROUP BY T.D_DATE, T.CLIENT
ORDER BY ORD_NUM
passm (2002-12-27 16:20:00) [9]SELECT T.D_DATE, T.N_DOC, T.CLIENT, T.D_SUMM
FROM TABLE1 AS T
WHERE T.CLIENT <> :CLENT_CASSA
UNION ALL
SELECT T.D_DATE, CAST(NULL AS INTEGER) AS N_DOC, T.CLIENT, SUM(T.D_SUMM) AS D_SUMM
FROM TABLE1 AS T
WHERE T.CLIENT = :CLENT_CASSA
GROUP BY T.D_DATE, T.CLIENT
Перев выполнением заполни ParamByName("CLIENT_CASSA").AsString значением "касса "
Delirium^.Tremens (2002-12-27 16:10:00) [10]
> и все равно он не объединяет данные
> так как № док разный.
Откуда он разный если я уже константой туда 0 ввел?
Delirium^.Tremens (2002-12-27 16:09:00) [11]
> Необходимо в отчете за 12.12.02 получить данные в таком
> формате
Дайте водички попить, а то так жрать хочется, что переночевать негде.
softmaster (2002-12-27 16:08:00) [12]и все равно он не объединяет данные
так как № док разный.
Блин, что делать?
softmaster (2002-12-27 16:07:00) [13]А если мне нужно получить отчет не за день, а за неделю?
Delirium^.Tremens (2002-12-27 16:01:00) [14]Ну, а так?
select data, ndoc, client, summa
from table_name
where client <> "Касса" and data = "12.12.2002"
union all
select data, 0 as ndoc, client, SUM(summa)
from table_name
where client = "Касса" and data = "12.12.2002"
Group By data, ndoc, client
softmaster (2002-12-27 15:50:00) [15]Нет, так пробовал.
Он данные по кассе разрывает, так как № док разные, он их не группирует.
Что нить еще можно попробовать?
Он выдает все в таком же виде
12.12.02 1 Мишин 100
12.12.02 2 Мишин 50
12.12.02 3 Касса 200
12.12.02 4 Касса 30
Delirium^.Tremens (2002-12-27 15:33:00) [16]Где-то около этого:
select data, ndoc, client, summa
from table_name
where client <> "Касса"
union all
select data, ndoc, client, SUM(summa)
from table_name
where client = "Касса"
Group By data, ndoc, client