AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.02.2002, 13:26   #1  
xroad is offline
xroad
Участник
 
10 / 16 (1) ++
Регистрация: 03.01.2002
Адрес: Москва
Как построить select
Есть задача: необходимо получить количество уникальных значений определённого поля в таблице. Тип поля - более менее произвольный (т.е. простой) Т.е. нужен аналог запроса: SELECT COUNT(DISTINCT Field) FROM Table.

Пример:
Пусть таблица имеет поле Field. Таблица содержит записи

Field
1
2
4
1
1
1
На выходе запроса: - 3


Хотелось бы сделать средствами AXAPTA (без использования подключения к серверу через класс Connection) и, конечно же, без использования while.
Старый 26.04.2002, 15:55   #2  
FLASH is offline
FLASH
Участник
 
1 / 10 (1) +
Регистрация: 26.04.2002
вообще вопрос конечно простой с точки зрения классического SQL однако можно попробовать делать типа такого select count(Field) from Table group by Field не факт что это будет работать по крайне мере даже не помню получалось ли у меня, хотя может надо бы поставить sp3
Старый 27.04.2002, 08:36   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
while select count(field) from table
group by field
{
print table.field;
}
Старый 21.01.2004, 16:46   #4  
sassas
Гость
 
n/a
Цитата:
Изначально опубликовано mazzy
while select count(field) from table
group by field
{
print table.field;
}
вместо print использовали info, суть дело это не меняет...

НЕ РАБОТАЕТ!!!
выдает значение field, а не count по группе(ам)!!!

что делать, уваж MAZZY???
Старый 21.01.2004, 17:45   #5  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
А так?
PHP код:
while select count(recidfrom table
group by field
{
print 
table.recid;

Старый 21.01.2004, 18:01   #6  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Не прошло и 2х лет с опубликования вопроса .. и найденого ответа.
простыми способами результат не получить, остается только извращаться
PHP код:
MyTable    myTable1myTable2;
;

select count(RecIdfrom myTable1
notexists join myTable2
    where myTable2
.myField == myTable1.myField && myTable2.RecId myTable1.RecId;

info(int2str(myTable1.RecId)); 
За это сообщение автора поблагодарили: _scorp_ (5).
Старый 22.01.2004, 10:04   #7  
sassas
Гость
 
n/a
Wamr, прокомментируй, пож
Это первый код. Дает 8 групп

LedgerTable lt, myTable1, myTable2;
;
while select count(recid) from lt
group by AccountPlType
{
print strfmt('%1 %2',lt.AccountPlType,lt.RecId);
}


Это второй (твой) код, дает число 126

LedgerTable lt, myTable1, myTable2;
;

select count(RecId) from myTable1
notexists join myTable2
where myTable2.AccountPlType == myTable1.AccountPlType && myTable2.RecId > myTable1.RecId;

info(int2str(myTable1.RecId));

Нужно было: получить число 8
Старый 22.01.2004, 10:45   #8  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Проверьте RecId
Так как у меня получилось 5 = 5
----------------
Добавлено
на результат влияет значение параметра CacheLookup. Если оно отлично от EntireTable, то считается нормально
Старый 22.01.2004, 11:43   #9  
sassas
Гость
 
n/a
да уж
у меня - Entire Table.
Еще не проверил , будет ли работать, но

-метод работающий нестабильно, довольно сложно применять.
-Да и результат его работы внушает сомнение.
-я, по наивности, думал, что кеширование влияет на скорость, а не результат...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
2 while select или join? _scorp_ DAX: Программирование 9 23.01.2009 16:02
Разница NotInTTS и Found Logger DAX: База знаний и проекты 6 18.09.2008 12:35
gatesasbait: Reverse keyword on Select Statements Blog bot DAX Blogs 0 08.02.2008 00:10
Fred Shen: Always use recId to know if a select statement returns a record Blog bot DAX Blogs 0 28.10.2006 16:40
Вопрос про Demand Planner slava09 DAX: Функционал 4 25.09.2006 11:43

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:37.