Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   ИТОГИ ПО в прямом запросе к DBF (http://forums.kuban.ru/f1040/itogi_po_v_pryamom_zaprose_k_dbf-3041981.html)

andertaletz 10.09.2012 09:49

ИТОГИ ПО в прямом запросе к DBF
 
Приветствую, Господа!
Имеется прямой запрос к ДБФ файлу. Нужно получить что-то типа ИТОГИ ПО в 1с 8

ТекстЗапроса = "SELECT
|РегПродажа.SP2224 as Количество,
|СпрНомен.DESCR as Номенклатура,
|SUM(РегПродажа.SP2224) as СуммаКоличество,
|FROM
| _RA2228Old РегПродажа
|Left Join _SC156Old СпрНомен ON РегПродажа.SP2218 = СпрНомен.ID
|GROUP BY ROLLUP(СпрНомен.DESCR)";

Вся эт беда выдает вот это сообщение:

State 42S22, native 806, message [Microsoft][ODBC Visual FoxPro Driver]SQL: Column ' ' is not found

Без |GROUP BY ROLLUP(СпрНомен.DESCR) всё работет хорошо.
Вопрос собственно в том, чтобы получить итоги по Номенклатуре (СпрНомен.DESCR) по типу "ИТОГИ ПО Номенклатура" в 8-ке.

andertaletz 10.09.2012 09:50

Перед FROM запятой естественно нет

Sadovnikov 10.09.2012 10:19

Может, не издеваться над провайдером, а посчитать итоги на клиенте?

Удар копытом 10.09.2012 10:20

ввобще не понятно, зачем в запросе есть
и
РегПродажа.SP2224 as Количество,
и
SUM(РегПродажа.SP2224) as СуммаКоличество,
не выкинуть ли РегПродажа.SP2224 as Количество. Зачем оно?

andertaletz 10.09.2012 10:31

2-Sadovnikov > Смысл в том, чтобы сделать запрос наподобие запроса в отчете Анализ продаж, а там группировка в запросе. Интересует именно возможность использовать ROLLUP или CUBE, или что-то подобное именно в прямом запросе.
Извините за злоупотребление словом Запрос

Sadovnikov 10.09.2012 10:32

4-andertaletz > Так я и спрашиваю - зачем считать это именно в запросе? Почему не на клиенте, при выводе отчета?

andertaletz 10.09.2012 10:33

3-Удар копытом > Благодарю за заботу, истину глаголите, но вопрос немного не в этом. Текст запроса - это небольшой кусочек из более крупного запроса.

andertaletz 10.09.2012 10:37

5-Sadovnikov >Очень хочется "подсунуть" Анализу продаж свой запрос (не факт, кстати, что получится), и не шибко заморачиваться со стандартным выводом этого отчета в зависимости от группировок и множественных фильтров. (Оговорюсь сразу - база не SQL)

Удар копытом 10.09.2012 10:37

(6) ну если там есть еще что-то, то может его там быть не должно.Там должны быть только то, что группируется. по крайней мере в т-скл
SELECT a, b, c, SUM
FROM T
GROUP BY ROLLUP (a,b,c);

andertaletz 10.09.2012 10:47

8-Удар копытом >SELECT
| _RA2228Old.SP2227 SUM
|FROM
| _RA2228Old
|GROUP BY ROLLUP(_RA2228Old.SP2227)

State 42S22, native 806, message [Microsoft][ODBC Visual FoxPro Driver]SQL: Column ' ' is not found

andertaletz 10.09.2012 10:48

Колонка есть 100%)

Удар копытом 10.09.2012 10:51

не, в примере SUM это не просто SUM ,а функция типа
SELECT a, b, c, SUM(d)

Удар копытом 10.09.2012 10:53

и понятно, что одно поле должно быть числовым, по которому идет SUM, и хотя бы одно еще группировочное

Удар копытом 10.09.2012 10:55

и это соответствует тому что ты писал в заголовке, только без |РегПродажа.SP2224 as Количество,

andertaletz 10.09.2012 10:57

Интересен факт, что
SELECT
| _RA2228Old.IDDOC,
| SUM(_RA2228Old.SP2227)
|FROM
| _RA2228Old
|GROUP BY ROLLUP(_RA2228Old.IDDOC)

дает тоже самое
State 42S22, native 806, message [Microsoft][ODBC Visual FoxPro Driver]SQL: Column ' ' is not found

Удар копытом 10.09.2012 11:01

а так?
SELECT
| _IDDOC,
| SUM(SP2227)
|FROM
| _RA2228Old
|GROUP BY ROLLUP(IDDOC)

andertaletz 10.09.2012 11:05

К моей печали
SELECT
| IDDOC,
| SUM(SP2227)
|FROM
| _RA2228Old
|GROUP BY ROLLUP(IDDOC)
Всё та же пижня

andertaletz 10.09.2012 11:07

Есть подозрение что в SQL версии это заработает, но вот как заставить файловую версию это скушать?

andertaletz 10.09.2012 11:14

SELECT
| IDDOC,
| SUM(SP2227)
|FROM
| _RA2228Old

Отрабатывает замечательно

Удар копытом 10.09.2012 11:19

а без роллапа?
|GROUP BY IDDOC,SUM(SP2227)

Удар копытом 10.09.2012 11:19

без суммы тоже

Удар копытом 10.09.2012 11:24

Можно начать подбирать синтаксис:))
GROUP BY IDDOC WITH ROLLUP

andertaletz 10.09.2012 11:24

SELECT
| IDDOC
|FROM
| _RA2228Old
|GROUP BY IDDOC,SUM(SP2227)

State 42S22, native 806, message [Microsoft][ODBC Visual FoxPro Driver]SQL: Column 'IDDOC' is not found

Удар копытом 10.09.2012 11:26

(22)
не,
SELECT
| IDDOC,
| SUM(SP2227)
|FROM
| _RA2228Old
|GROUP BY IDDOC

andertaletz 10.09.2012 11:28

21-Удар копытом > Пробовал, получил сей результат
Command contains unrecognized phrase/keyword

andertaletz 10.09.2012 11:38

23-Удар копытом > Работает, группирует, суммирует. Но получаем только группы, т.е. что-то типа

Наименование | Кол-во.
------------------------
Дырка от бублика | 4 шт.

А надо

Наименование | Кол-во.
------------------------
[b]Дырка от бублика | 4 шт.[/b]
Дырка от бублика | 1 шт.
Дырка от бублика | 3 шт.

Удар копытом 10.09.2012 11:40

(25) а так
SELECT
| IDDOC,
| SUM(SP2227)
|FROM
| _RA2228Old
|GROUP BY IDDOC WITH ROLLUP

Удар копытом 10.09.2012 11:44

а если к 23 подставить роллап, то кирдык?

Sadovnikov 10.09.2012 11:47

OFF Сижу и думаю - зачем люди пишут документацию к программным продуктам?
Ну это я так. Не мешаюсь больше, беседуйте :)

andertaletz 10.09.2012 11:49

26-Удар копытом > не понимает драйвер vfpodbc.dll таких слов как WITH ROLLUP
говорит
State 42000, native 219, message [Microsoft][ODBC Visual FoxPro Driver]Command contains unrecognized phrase/keyword

andertaletz 10.09.2012 11:53

28-Sadovnikov > Ниче ниче. Я за любую движуху, если туплю, то критикуйте без стеснения. Кстати на документацию бы если можно ссылку, главное чтобы там было про мои любимые ИТОГИ

Удар копытом 10.09.2012 11:53

Ладно, бабушку помучали неплохо:)
Придется таки читать документацию:))
Или сходи на sql.ru, там должны были остаться живые фокспрошники:)

andertaletz 10.09.2012 11:59

Есть еще вариант сделать два запроса, один с группами, другой без, и UNION ALL с ORDER BY но это не комильфо, ибо группировки изначально не известны, хотя...

USSR 10.09.2012 12:02

Запросы с ROLLUP не пробовал, но GROUP BY должно быть обязательно по всем полям выборки, неохваченным агрегатными функциями типа SUM, MAX и тд. В ДБФ версии можно тупо группировать по номерам полей: GROUO BY 1,2// Не очень эстетично, но работает

andertaletz 10.09.2012 12:16

33-USSR >Це группировки, а мне треба итоги


Текущее время: 12:30. Часовой пояс GMT +3.