|
![]() |
#1 |
Участник
|
Нет, в общем-то я хотел констатировать факт, что если суммировать по тому же полю, по которому группировать, то желаемого результата не будет.
Задача была выбрать количество разных поставщиков, для которых созданы закупки...
__________________
http://www.axdevposts.blogspot.com Пришел, уведел.... отойди, дай другому увидеть! |
|
![]() |
#2 |
MCITP
|
![]() Цитата:
![]() Вы пытались сделать вот такой запрос, вот выполните его и посмотрите, что выдаёт нормальный SQL, который вы хотели построить: X++: Select orderaccount, count(orderaccount), count(*) From Purchtable Group By orderaccount ![]() Вам же нужен один из следующих запросов: X++: Select Count ( Distinct Orderaccount ) From Purchtable / Select Count ( * ) From ( Select Orderaccount From Purchtable Group By Orderaccount ) Как вариант - воспользуйтесь direct sql. Примерный код для 3-ки (тестировал на Оракле): X++: static void Job22(Args _args) { dictTable dictTable = new DictTable(tableNum(PurchTable)); Connection con = new Connection(); ResultSet rs; Statement stmt; str sql; str dataareaid; int cnt; ; if (dictTable.dataPrCompany()) { DataAreaId = curext(); if ( SqlSystem::databaseBackendId() == DatabaseId::Oracle ) dataareaid = strFmt(new SqlSystem().monocaseFmt(),dataareaid); } sql = strFmt("Select Count ( Distinct %1 ) From %2 where %3 = \'%4\'", dictTable.fieldName(fieldnum(PurchTable, OrderAccount), DBBackend::SQL), dictTable.name(DbBackend::SQL), dictTable.fieldName(fieldnum(PurchTable, DataAreaId), DBBackend::SQL), DataAreaId); info(sql); stmt = con.createStatement(); rs = stmt.executeQuery(sql); if (rs.next()) { cnt = rs.getInt(1); } info(int2str(cnt)); }
__________________
Zhirenkov Vitaly |
|
|
За это сообщение автора поблагодарили: plumbum (1). |