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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.01.2019, 10:15   #1  
magueger is offline
magueger
Участник
 
10 / 10 (1) +
Регистрация: 28.01.2019
Исключение повторяющихся строк
В таблице, по которой необходимо произвести сортировку и вывести отчет, есть уникальное поле, которое в отчет не выводится, и никакие действия с ним не производятся. Из-за наличия уникального поля, в отчет выходят одинаковые строки, которые необходимо сгруппировать/выбрать первую попавшуюся (group by особо не помог). Каким образом эти строки можно исключить?
X++:
while select rPaytitleposting
            where rPaytitleposting.HrmOrganizationId == rHRMStaffList.OrganizationId
               && rPaytitleposting.TitleId           == rHRMStaffList.PositionId
               && rPaytitleposting.TradeCategoryId   == rHRMStaffList.TradeCategoryId
               && rPaytitleposting.Dimension[2]      != ""
Старый 28.01.2019, 11:25   #2  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
885 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Цитата:
Сообщение от magueger Посмотреть сообщение
Каким образом эти строки можно исключить?
А хрен его знает, товарищ майор, с такими-то вводными ...
__________________
Мы летаем, кружимся, нагоняем ужасы ...
Старый 28.01.2019, 12:04   #3  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
699 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Цитата:
Сообщение от magueger Посмотреть сообщение
(group by особо не помог).
А как же вы его так делали, что он не помог?
Старый 28.01.2019, 12:09   #4  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
через notexists join
как замена нормально DISTINCT
Старый 28.01.2019, 12:16   #5  
magueger is offline
magueger
Участник
 
10 / 10 (1) +
Регистрация: 28.01.2019
может так будет понятней:
сама таблица состоит из след полей - структурное подразделение, профессия, код профиля разноски (уникальное поле), счет ГК, вид деятельности, статья, категория.
в отчет поля "код профиля разноски" и "категория" не выводятся.
Например, таблица с такими данными:

Код Стр-ное подр. Проф. Счет ГК Подр. Вид деят. Статья
1 Первое Тракторист 20.01 УС 03 123
2 Первое Тракторист 20.05 УС 03 123
3 Второе Водитель 96.01 БС 03 123
4 Второе Водитель 96.03 БС 03 123
5 Второе Водитель 96.01 БС 03 123
6 Первое тракторист 20.01 УС 03 123

Должно выводиться так:

Код Стр-ное подр. Проф. Счет ГК Подр. Вид деят. Статья
1 Первое Тракторист 20.01 УС 03 123
2 Первое Тракторист 20.05 УС 03 123
3 Второе Водитель 96.01 БС 03 123
4 Второе Водитель 96.03 БС 03 123

Но из-за наличия уникального поля в отчете получается так:

Стр-ное подр. Проф. Счет ГК Подр. Вид деят. Статья
Первое Тракторист 20.01 УС 03 123
Первое Тракторист 20.05 УС 03 123
Второе Водитель 96.01 БС 03 123
Второе Водитель 96.03 БС 03 123
Второе Водитель 96.01 БС 03 123
Первое тракторист 20.01 УС 03 123

т.е. появляются одинаковые записи, которые нужно убрать
Старый 28.01.2019, 12:21   #6  
magueger is offline
magueger
Участник
 
10 / 10 (1) +
Регистрация: 28.01.2019
если делаю group by по конкретному полю, то в отчет только оно и выводится, если делаю по всем полям, то выводятся все поля, но также с одинаковыми строками

Последний раз редактировалось magueger; 28.01.2019 в 12:25.
Старый 28.01.2019, 12:34   #7  
Stitch_MS is offline
Stitch_MS
Участник
Аватар для Stitch_MS
Соотечественники
 
396 / 478 (16) +++++++
Регистрация: 27.02.2006
Адрес: Дания
Цитата:
...есть уникальное поле, которое в отчет не выводится, и никакие действия с ним не производятся. Из-за наличия уникального поля...
А что с полем "Счет ГК"? Оно выводится в отчет, и явно мешает группировать строки как задумано.
Старый 28.01.2019, 12:41   #8  
magueger is offline
magueger
Участник
 
10 / 10 (1) +
Регистрация: 28.01.2019
Цитата:
Сообщение от Stitch_MS Посмотреть сообщение
А что с полем "Счет ГК"? Оно выводится в отчет, и явно мешает группировать строки как задумано.
уточните, пожалуйста, как оно мешает группировать строки?
Старый 28.01.2019, 12:44   #9  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
699 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Цитата:
Сообщение от magueger Посмотреть сообщение
если делаю group by по конкретному полю, то в отчет только оно и выводится, если делаю по всем полям, то выводятся все поля, но также с одинаковыми строками
Сделайте группировку по всем полям кроме того которое мешает. Если вам нужно значение "мешаеюшего" поля то вам прийдеться брать или минимальное или максимальное значение от него, ну или средне, как хотите
Старый 28.01.2019, 12:48   #10  
magueger is offline
magueger
Участник
 
10 / 10 (1) +
Регистрация: 28.01.2019
Цитата:
Сообщение от skuull Посмотреть сообщение
Сделайте группировку по всем полям кроме того которое мешает. Если вам нужно значение "мешаеюшего" поля то вам прийдеться брать или минимальное или максимальное значение от него, ну или средне, как хотите
я как раз об этом и говорю, при группировке всех необходимых полей, ситуация не меняется, выводятся одинаковые строки, "мешающее" поле вообще нигде не используется
Старый 28.01.2019, 13:18   #11  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,427 / 1771 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Таблица не временная ли случаем?
Group by и временная таблица
Старый 28.01.2019, 13:29   #12  
magueger is offline
magueger
Участник
 
10 / 10 (1) +
Регистрация: 28.01.2019
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Таблица не временная ли случаем?
Group by и временная таблица
нет, была попытка использовать временную таблицу, но строки также повторяются, была мысль потом ее прогонять и удалять лишнее, но слишком муторно получается
Старый 28.01.2019, 13:40   #13  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,427 / 1771 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Покажите ваш код с группировкой
Старый 28.01.2019, 13:49   #14  
magueger is offline
magueger
Участник
 
10 / 10 (1) +
Регистрация: 28.01.2019
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Покажите ваш код с группировкой
X++:
while select rPaytitleposting
            group by rPaytitleposting.TitleId, rPaytitleposting.Dimension, rPaytitleposting.HrmOrganizationId,
                    rPaytitleposting.Account
            where rPaytitleposting.HrmOrganizationId == rHRMStaffList.OrganizationId
               && rPaytitleposting.TitleId           == rHRMStaffList.PositionId
               && rPaytitleposting.TradeCategoryId   == rHRMStaffList.TradeCategoryId
               && rPaytitleposting.Dimension[2]      != ""
Старый 28.01.2019, 14:02   #15  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,651 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Поле типа "массив" Dimension физически - это столько полей, сколько их в массиве. Т.е. когда Вы пишите

group by Dimension

для SQL это означает запись вида

group by Dimension[1], Dimension[2], Dimension[3], ... Dimension[XXX]

соответственно, получаем "дубли" по тем аналитикам, которые не отображаются в отчете, но по которым выполняется группировка. Вам надо явным образом указать в качестве полей группировки только те аналитики, которые отображаются в отчете
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: S.Kuskov (2).
Старый 28.01.2019, 14:02   #16  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,427 / 1771 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Группируя по Dimension, вы группируете по каждой из финансовых аналитик. Если вам не нужны все аналитики, то укажите только нужные. Например: rPaytitleposting.Dimension[2]
Старый 28.01.2019, 14:07   #17  
magueger is offline
magueger
Участник
 
10 / 10 (1) +
Регистрация: 28.01.2019
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Поле типа "массив" Dimension физически - это столько полей, сколько их в массиве. Т.е. когда Вы пишите

group by Dimension

для SQL это означает запись вида

group by Dimension[1], Dimension[2], Dimension[3], ... Dimension[XXX]

соответственно, получаем "дубли" по тем аналитикам, которые не отображаются в отчете, но по которым выполняется группировка. Вам надо явным образом указать в качестве полей группировки только те аналитики, которые отображаются в отчете
при группировке конкретных статей выходит ошибка "Невозможно выбрать запись в Счета ГК зарплаты (RPaytitleposting). Код подразделения: , .
База данных SQL обнаружила ошибку."
Старый 28.01.2019, 17:24   #18  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,651 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Напишите здесь код, при выполнении которого возникла ошибка. Кстати, какая у Вас версия Axapta?
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 29.01.2019, 06:58   #19  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
642 / 347 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Полагаю, AX2012, поскольку указывать таблицу при группировке в более ранних версиях не разрешено компилятором.
Цитата:
Сообщение от magueger Посмотреть сообщение
X++:
while select rPaytitleposting
            group by rPaytitleposting.TitleId, rPaytitleposting.Dimension, rPaytitleposting.HrmOrganizationId,
                    rPaytitleposting.Account
            where rPaytitleposting.HrmOrganizationId == rHRMStaffList.OrganizationId
               && rPaytitleposting.TitleId           == rHRMStaffList.PositionId
               && rPaytitleposting.TradeCategoryId   == rHRMStaffList.TradeCategoryId
               && rPaytitleposting.Dimension[2]      != ""
__________________
// no comments
Старый 29.01.2019, 07:08   #20  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,427 / 1771 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от dech Посмотреть сообщение
Полагаю, AX2012, поскольку указывать таблицу при группировке в более ранних версиях не разрешено компилятором.
Почему же? Вполне себе разрешено: Полные предложения ORDER BY и GROUP BY
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Раскраска грида и границы строк IKA DAX: Программирование 3 25.09.2013 12:22
Экспорт в Excel, раздвигание строк alvares DAX: Программирование 11 16.04.2012 17:47
Как имитировать подсветку активной строки/строк? uchenik DAX: Программирование 17 13.12.2011 16:18
Тормозит копирование строк в буфер обмена ivas DAX: Программирование 20 21.08.2007 15:05
Пользовательский генератор строк-перечислений...- 2: Доп.вкладка для SysQueryForm Gustav DAX: База знаний и проекты 1 04.05.2007 18:04
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:58.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.