28.01.2019, 10:15 | #1 |
Участник
|
Исключение повторяющихся строк
В таблице, по которой необходимо произвести сортировку и вывести отчет, есть уникальное поле, которое в отчет не выводится, и никакие действия с ним не производятся. Из-за наличия уникального поля, в отчет выходят одинаковые строки, которые необходимо сгруппировать/выбрать первую попавшуюся (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 |
Мрачный тип
|
А хрен его знает, товарищ майор, с такими-то вводными ...
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
28.01.2019, 12:04 | #3 |
Участник
|
|
|
28.01.2019, 12:09 | #4 |
----------------
|
через notexists join
как замена нормально DISTINCT |
|
28.01.2019, 12:16 | #5 |
Участник
|
может так будет понятней:
сама таблица состоит из след полей - структурное подразделение, профессия, код профиля разноски (уникальное поле), счет ГК, вид деятельности, статья, категория. в отчет поля "код профиля разноски" и "категория" не выводятся. Например, таблица с такими данными: Код Стр-ное подр. Проф. Счет ГК Подр. Вид деят. Статья 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 |
Участник
|
если делаю group by по конкретному полю, то в отчет только оно и выводится, если делаю по всем полям, то выводятся все поля, но также с одинаковыми строками
Последний раз редактировалось magueger; 28.01.2019 в 12:25. |
|
28.01.2019, 12:34 | #7 |
Участник
|
Цитата:
...есть уникальное поле, которое в отчет не выводится, и никакие действия с ним не производятся. Из-за наличия уникального поля...
|
|
28.01.2019, 12:41 | #8 |
Участник
|
|
|
28.01.2019, 12:44 | #9 |
Участник
|
Сделайте группировку по всем полям кроме того которое мешает. Если вам нужно значение "мешаеюшего" поля то вам прийдеться брать или минимальное или максимальное значение от него, ну или средне, как хотите
|
|
28.01.2019, 12:48 | #10 |
Участник
|
я как раз об этом и говорю, при группировке всех необходимых полей, ситуация не меняется, выводятся одинаковые строки, "мешающее" поле вообще нигде не используется
|
|
28.01.2019, 13:18 | #11 |
Участник
|
Таблица не временная ли случаем?
Group by и временная таблица |
|
28.01.2019, 13:29 | #12 |
Участник
|
Цитата:
Сообщение от S.Kuskov
Таблица не временная ли случаем?
Group by и временная таблица |
|
28.01.2019, 13:40 | #13 |
Участник
|
Покажите ваш код с группировкой
|
|
28.01.2019, 13:49 | #14 |
Участник
|
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 |
Участник
|
Поле типа "массив" Dimension физически - это столько полей, сколько их в массиве. Т.е. когда Вы пишите
group by Dimension для SQL это означает запись вида group by Dimension[1], Dimension[2], Dimension[3], ... Dimension[XXX] соответственно, получаем "дубли" по тем аналитикам, которые не отображаются в отчете, но по которым выполняется группировка. Вам надо явным образом указать в качестве полей группировки только те аналитики, которые отображаются в отчете
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
28.01.2019, 14:02 | #16 |
Участник
|
Группируя по Dimension, вы группируете по каждой из финансовых аналитик. Если вам не нужны все аналитики, то укажите только нужные. Например: rPaytitleposting.Dimension[2]
|
|
28.01.2019, 14:07 | #17 |
Участник
|
Цитата:
Сообщение от Владимир Максимов
Поле типа "массив" Dimension физически - это столько полей, сколько их в массиве. Т.е. когда Вы пишите
group by Dimension для SQL это означает запись вида group by Dimension[1], Dimension[2], Dimension[3], ... Dimension[XXX] соответственно, получаем "дубли" по тем аналитикам, которые не отображаются в отчете, но по которым выполняется группировка. Вам надо явным образом указать в качестве полей группировки только те аналитики, которые отображаются в отчете База данных SQL обнаружила ошибку." |
|
28.01.2019, 17:24 | #18 |
Участник
|
Напишите здесь код, при выполнении которого возникла ошибка. Кстати, какая у Вас версия Axapta?
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
29.01.2019, 06:58 | #19 |
Участник
|
Полагаю, 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 |
Участник
|
Цитата:
|
|