Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как правильно сделать запрос по датам
|
|||
|---|---|---|---|
|
#18+
Здравствуйте ALL вопрос такой есть база оплаты pay_v.dbf с полями data_o(d), nr(n 5), name(c 20), sum(10,2) какой запрос я должен сделать, чтобы мне заменить оплату до определенного числа т.е. nr name data_o sum 3 петя 11.11.2003 12.01 4 василь 12.11.2003 13.01 22 миша 11.11.2003 2.01 3 петя 30.11.2003 11.22 4 василь 30.11.2003 14.55 4 василь 02.12.2003 16.22 3 петя 03.12.2003 14.44 мне нужно сложить все платежу до 1.12.2004 по nr должно получится nr name data_o sum 22 миша 01.12.2003 2.01 4 василь 01.12.2003 27.56 4 василь 02.12.2003 16.22 3 петя 03.12.2003 14.44 3 петя 01.12.2003 23.23 не получается Заранне спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2004, 14:30 |
|
||
|
Как правильно сделать запрос по датам
|
|||
|---|---|---|---|
|
#18+
Извините, таки я не понял Вам нужно сложить или заменить??? Если можно конкретней задаче поставь пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2004, 14:37 |
|
||
|
Как правильно сделать запрос по датам
|
|||
|---|---|---|---|
|
#18+
Сложить всё, что было до 01.12.2003 включительно и сумме присвоить эту дату, позже - не трогать? Так? И ещё - по какому полю суммировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2004, 15:18 |
|
||
|
Как правильно сделать запрос по датам
|
|||
|---|---|---|---|
|
#18+
мне нужно упаковать базу до 01.01.2004г. т.е. там где встречается поле nr (например со значением 3) до 01.01.2004г. слаживалось и удалялось оставалась итоговая симма. на 01.01.2004г. в итоге общая сумма на 01.01.2004г. плюс то, что платили после 01.01.2004г. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2004, 15:21 |
|
||
|
Как правильно сделать запрос по датам
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. И не давай имена полям, совпадающие со служебными словами! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2004, 15:44 |
|
||
|
Как правильно сделать запрос по датам
|
|||
|---|---|---|---|
|
#18+
SELECT ALL ; Old.Nr, Old.Name, {^2004.01.01} AS Data_O, SUM(Old.Sum) AS Sum ; FROM Pay_V AS Old INTO DBF Pay_New ; WHERE Old.Data_O<{^2004.01.01} ; GROUP BY 1,2 ; UNION ALL ; SELECT New.Nr, New.Name, New.Data_O, New.Sum ; FROM Pay_V AS New ; WHERE New.Data_O>={^2004.01.01} ; ORDER BY 1,2 ----------------------------------------------- В ДАННОМ КОДЕ У МЕНЯ МЕНЯЕТЯ ТОЛЬКО ДАТА СТАНОВИТСЯ 2004.01.01 А МНЕ НУЖНО ЧТОБЫ ВСЕ ПЛАТЕЖИ ДО 2004.01.01 СУМИРОВАЛИСЬ И ПОЛУЧАЛИСЬ ОДНОЙ СУММОЙ И УДАЛЯЛИСЬ ОСТАВАЛАСЬ ИТОГОВАЯ СУММА, А ОПЛАТА КОТОРОЯ ПРОХОДИЛА ПОСЛЕ 2004.01.01 ШЛА БЕЗ ИЗМЕНЕНИЯ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2004, 16:44 |
|
||
|
Как правильно сделать запрос по датам
|
|||
|---|---|---|---|
|
#18+
CAPSLOCK ВЫКЛЮЧИ, ДА! "В данном коде" суммируется всё, что было до 01.01.2004, по плательщикам ! Платежи после указанной даты не изменяются! Или тогда объясни толком, что в твоём понимании означает: т.е. там где встречается поле nr (например со значением 3) до 01.01.2004г Имя плательщика ничего не значит??? P.S. Я загнал в табличку цифирки из твоего примера: nr name data_o sum 3 петя 11.11.2003 12.01 4 василь 12.11.2003 13.01 22 миша 11.11.2003 2.01 3 петя 30.11.2003 11.22 4 василь 30.11.2003 14.55 4 василь 02.12.2003 16.22 3 петя 03.12.2003 14.44 и получил то, что ты хотел (только сортировка другая - нормальная): nr name data_o sum 22 миша 01.12.2003 2.01 4 василь 01.12.2003 27.56 4 василь 02.12.2003 16.22 3 петя 03.12.2003 14.44 3 петя 01.12.2003 23.23 P.P.S. И не давай полям имена, совпадающие со служебными словами! P.P.P.S. Удаление сам сделаешь? ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2004, 01:20 |
|
||
|
Как правильно сделать запрос по датам
|
|||
|---|---|---|---|
|
#18+
CAPSLOCK выключил! "В данном коде" суммируется всё, что было до 01.01.2004, по плательщикам! а вот и не сумируется он отлько переписывает даты Платежи после указанной даты не изменяются! - согласен Или тогда объясни толком, что в твоём понимании означает: ----------------------------- т.е. там где встречается поле nr (например со значением 3) до 01.01.2004г --------------------- до 01.01.2004г. нужно сумировать в итоговую а после 01.01.2004 не трогать т.е. (как бы исходный остаток на 01.01.2004г. ) Имя плательщика ничего не значит??? "да" уникальное поле nr -------------------------- P.P.S. И не давай полям имена, совпадающие со служебными словами! P.P.P.S. Удаление сам сделаешь? ;-) -------------------------- dbf- не мой не я создавал, меня просто попросили обрезать базу. Заранне спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2004, 08:30 |
|
||
|
Как правильно сделать запрос по датам
|
|||
|---|---|---|---|
|
#18+
а вот и не сумируется он отлько переписывает даты А вот и суммируется! :-) Убираем "несущественные" имена... Может поможет... :-) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. P.P.S. Если не получается - дай "кусочек" Pay_V на пробу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2004, 11:27 |
|
||
|
Как правильно сделать запрос по датам
|
|||
|---|---|---|---|
|
#18+
А вот и суммируется! -- сумируется так согласен SELECT ALL ; Old.Nr, {^2004.01.01} AS Data_O, SUM(Old.Sum) AS Sum ; FROM Pay_V AS Old INTO DBF Pay_New ; WHERE Old.Data_O<{^2004.01.01} ; GROUP BY 1 ; UNION ALL ; SELECT New.Nr, New.Data_O, New.Sum ; FROM Pay_V AS New ; WHERE New.Data_O>={^2004.01.01} ; ORDER BY 1 ************************ но мне нужно и поле name , а оно теряется в этом запросе. *************** подставляю как написали в первом примере остается поле name но суммы не сумируются вот база ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2004, 16:14 |
|
||
|
Как правильно сделать запрос по датам
|
|||
|---|---|---|---|
|
#18+
А вот еще дату в этой базе нужно например упаковать на 01.01.2003 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2004, 16:15 |
|
||
|
Как правильно сделать запрос по датам
|
|||
|---|---|---|---|
|
#18+
А еще в этой базе я поле name переименовал в n_p ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2004, 16:32 |
|
||
|
Как правильно сделать запрос по датам
|
|||
|---|---|---|---|
|
#18+
уникальное поле nr А теперь говоришь, что тебе имя плательщика нужно :-( Так тебе по nr , по name или по nr+name суммировать? Ты уж определись как-нибудь! Другими словами могут у тебя быть записи типа: 1 Миша 1 Петя 3 Вася 3 Петя Если да , то как ты хочешь суммировать по nr=1, если при nr=1 разные имена? Тебе нужна другая дата для "упаковки"? Ну так замени {^2004.01.01} на переменную, а ей присваивай какие хочешь значения! авторА еще в этой базе я поле name переименовал в n_p Дык! Предлагаешь мне пример SELECT'a переписать? Кстати, почему-то твой zip не хочет закачиваться :-( Если хочешь, брось его мне на мыло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2004, 17:02 |
|
||
|
Как правильно сделать запрос по датам
|
|||
|---|---|---|---|
|
#18+
Скачал... Не надо по почте... Всё! Забыли про Nr раз и навсегда! Единственно непонятный момент - какое значение ты присвоишь Nr в "упакованных" записях (там, где Nr будет равно 0)... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2004, 19:12 |
|
||
|
Как правильно сделать запрос по датам
|
|||
|---|---|---|---|
|
#18+
зачем name превратилось в n_p и стало цифрами в символьном поле? n_p это уникальный код берется "id- имя" с другой таблицы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2004, 21:30 |
|
||
|
Как правильно сделать запрос по датам
|
|||
|---|---|---|---|
|
#18+
Nr в "упакованных" записях (там, где Nr будет равно 0). я же говорю, что nr это уникальное поле и не может быть равна = о ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2004, 21:34 |
|
||
|
Как правильно сделать запрос по датам
|
|||
|---|---|---|---|
|
#18+
Ладно... Последний раз... nr это уникальное поле и не может быть равно = 0 Чему оно должно быть равно в записях с суммами на заданную дату? n_p это уникальный код На заданную дату нужно суммировать цифры по плательщику ? Раз у тебя столько полей "уникально", то по ним и суммируем! Если такой подход тебя не устраивает, то твоя задача лишена смысла... Или теряешь одно из полей... В общем, если не в облом, возьми тот образец, что ты сюда выложил, сделай из него ручками то, что нужно твоему заказчику и выложи сюда... Может так пробьемся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2004, 22:31 |
|
||
|
Как правильно сделать запрос по датам
|
|||
|---|---|---|---|
|
#18+
не в облом, только я сократил записи до 30 -------------------------------------------------- nr это уникальное поле и не может быть равно = 0 --- ДА Чему оно должно быть равно в записях с суммами на заданную дату? т.е. если nr =3 то и на заданную дату оно должно быть 3 -------------------- n_p это не уникальный код - он должен быть равен последней записли из выбранных записей с 2002г. т.е. ЭТО Я неправильно сформулировал ИЗВЕНИ ТЫ ПРАВ data_o nr n_p sum 11.11.2002 3 3 10.10 12.11.2002 3 4 12.23 11.01.2003 3 6 12.33 на дату 01.01.2003г. должно быть data_o nr n_p sum 01.01.2003 3 4 22.33 11.01.2003 3 6 12.33 ------------------------------------ На заданную дату нужно суммировать цифры по плательщику? НЕТ ПО NR В общем, если не в облом, возьми тот образец, что ты сюда выложил, сделай из него ручками то, что нужно твоему заказчику и выложи сюда... Может так пробьемся? НАДЕЮСЬ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2004, 08:32 |
|
||
|
Как правильно сделать запрос по датам
|
|||
|---|---|---|---|
|
#18+
Вопросы продолжаются... ;-) Что такое "последняя запись" - физически последняя или запись с максимальной датой для данного nr ? P.S. Конечно, может быть это одно и то же, но перестраховаться не помешает :-) Кто знает, как эта база заполнялась... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2004, 16:17 |
|
||
|
Как правильно сделать запрос по датам
|
|||
|---|---|---|---|
|
#18+
Что такое "последняя запись" - физически последняя или запись с максимальной датой для данного nr? "последняя запись" - - это физиччески последная запись для данного nr до определенного числа в нашем случае до 01.01.2003г. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2004, 16:27 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32601871&tid=1596149]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
42ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 222ms |
| total: | 390ms |

| 0 / 0 |
