그룹별로 여러 행에 문자열을 연결하는 방법은 무엇입니까?안녕하세요,
각 제품의 제품 코드가 다른 제품 목록(> 100)이 있습니다. 아래 예제와 같이 각 제품의 제품 코드를 연결하는 "제품 코드 범위" 열을 새로 만들고 싶습니다. 이 작업을 수행할 수 있는 JSL 코드를 작성하는 방법은 무엇입니까?

스크립팅Re: 그룹별로 여러 행에 문자열을 연결하는 방법은 무엇입니까?짐.
훌륭합니다.감사합니다.
나는 오늘 새로운 것을 배운다
Re: 그룹별로 여러 행에 문자열을 연결하는 방법은 무엇입니까?자모,
감사합니다. 제공된 모든 솔루션은 훌륭합니다.
내 학습에 도움이 될 것입니다.
Re: 그룹별로 여러 행에 문자열을 연결하는 방법은 무엇입니까?Get Rows Where()를 사용하여 이를 수행하는 또 다른 방법이 있습니다.
New Column( "PRC",
character,
set each value(
theProduct = :Product[Row()];
Concat Items(
:Product Code[Current Data Table() << get rows where( :Product == theProduct )],
"/"
);
)
);

Re: 그룹별로 여러 행에 문자열을 연결하는 방법은 무엇입니까?스크립팅이 필요하지 않은 옵션이 하나 더 생각났습니다(하지만 쉽게 스크립팅할 수 있음/JMP는 대부분 스크립팅할 수 있음)(이 방법을 사용하면 순서가 변경될 가능성이 높음).
1. 원본 데이터 분할

2. P로 시작하는 모든 열을 선택하고 Cols/Combine Columns를 사용하여 새 열을 만듭니다.

3. 새로 결합된 열이 있는 새 테이블을 원본 데이터에 조인

4. 결과:

Re: 그룹별로 여러 행에 문자열을 연결하는 방법은 무엇입니까?다른 옵션은 제품을 키로 사용하고 목록의 제품 코드를 값으로 사용하여 연관 배열을 만든 다음 새 열을 채우는 것입니다. 이것은 For Each로 인해 JMP16이 필요하지만 필요에 따라 For-loop로 대체할 수 있습니다.
Names Default To Here(1);
dt = Current Data Table();
aa = Associative Array(:Product << get values);
For Each({{key, value}}, aa,
aa[key] = dt[Loc(dt[0, "Product"], key), "Product Code"];
);
dt << New Column("Product Code Range", Character, Nominal, << Set Each Value(
Concat Items(aa[:Product], "/");
));Re: 그룹별로 여러 행에 문자열을 연결하는 방법은 무엇입니까?나는 이것을 도울 수있는 addin을 작성했습니다 Listagg 열 그룹화 . LISTAGG 작업을 수행하기 위해 sql-query를 사용하고 있습니다. 추가 기능을 설치하고 거기에서 코드를 가져올 수 있습니다. 기본 아이디어는 다음과 같습니다.
Names Default To Here(1);
dt = Current Data Table();
custom_sql = Eval Insert(
"\[SELECT Product, GROUP_CONCAT(DISTINCT CAST("Product Code" as TEXT)) as "Product Code Range"
FROM t1
GROUP BY Product
]\");
dt_concat = Query(
Table(dt, "t1"),
custom_sql
);

그런 다음 dt_concat을 원래 테이블에 다시 조인합니다.
JSL 구문 참조 > JMP 쿼리에 사용할 수 있는 SQL 함수 > SQL 함수 집계