15.05.2020, 11:36 | #1 |
Участник
|
Группировка по нескольким полям из разных таблиц
Здравствуйте.
Как 'перевести' запрос с группировкой на X++. На SQL запрос вот такой select t1.Field1, t2.Field1, count(*), max(t1.Name), max(t2.Name) from Table1 t1 inner join Table2 t2 on Table2.KeyField = Table1.KeyField group by t1.Field1, t2.Field1 // что-то типа этого не работает while select count(Field1), maxof(Name) from Table1 group by Field1 join KeyField from Table2 group by Field1 where Table1.KeyField == Table2.KeyField |
|
15.05.2020, 12:28 | #2 |
Участник
|
в 2012 такое работает:
X++: while select CustGroup from custtable group by CustGroup join Voucher from custTrans where custTrans.AccountNum == custtable.AccountNum join DueDate from custTransOpen group by DueDate where custTransOpen.RefRecId == custTrans.RecId меня смущает то что у вас Field1 и в группировке и в count(Field1) Последний раз редактировалось Pandasama; 15.05.2020 в 12:30. |
|
15.05.2020, 12:38 | #3 |
Участник
|
Цитата:
Сообщение от Pandasama
в 2012 такое работает:
X++: while select CustGroup from custtable group by CustGroup join Voucher from custTrans where custTrans.AccountNum == custtable.AccountNum join DueDate from custTransOpen group by DueDate where custTransOpen.RefRecId == custTrans.RecId меня смущает то что у вас Field1 и в группировке и в count(Field1) |
|
15.05.2020, 12:43 | #4 |
Участник
|
Посмотрите на фразу:
Цитата:
меня смущает то что у вас Field1 и в группировке и в count(Field1)
пробуйте count(RecId) |
|
15.05.2020, 12:59 | #5 |
Участник
|
Цитата:
оставлял в селекте даже только Field1 с одной группировкой, всё равно ошибка while select Field1 from Table1 group by Field1 join KeyField from Table2 where Table1.KeyField == Table2.KeyField |
|
15.05.2020, 13:26 | #6 |
северный Будда
|
а текст ошибки-то какой?
__________________
С уважением, Вячеслав |
|
15.05.2020, 14:38 | #7 |
Участник
|
Job
static void Job666(Args _args) { TestTable1 testTable1; TestTable2 testTable2; ; while select Field1 from TestTable1 group by Field1 join KeyField from TestTable2 where TestTable1.KeyField == TestTable2.KeyField { info("Test group by"); } } |
|
15.05.2020, 15:21 | #8 |
Участник
|
Цитата:
X++: while select count(RecId), maxof(Name) from Table1 group by Field1 join maxof(Name) from Table2 group by Field1 where Table2.KeyField == Table1.KeyField { info(strfmt("%1, %2, %3, %4, %5", Table1.Field1, Table2.Field1, Table1.RecId, Table1.Name, Table2.Name)); } Последний раз редактировалось S.Kuskov; 15.05.2020 в 15:35. |
|
15.05.2020, 15:54 | #9 |
Участник
|
|
|
15.05.2020, 18:20 | #10 |
Участник
|
Ну, вроде бы сообщение читаемое и соответствует таким же ошибкам если написать что-то подобное на T-SQL.
Есть X++: join KeyField X++: group by KeyField X++: join TestTable2 X++: join TableId from TestTable2 group by TableId |
|