[SQL] MS 액세스 쿼리 : 쿼리를 통해 행을 연결
SQLMS 액세스 쿼리 : 쿼리를 통해 행을 연결
나는 다음과 같은 정보와 MS 액세스에서 테이블이 있다고 가정 :
ColumnA ColumnB
1 abc
1 pqr
1 xyz
2 efg
2 hij
3 asd
내 질문은 내가 처음 열을 기준으로 행 값으로 두 번째 열의 값을 연결할 수있는 방법입니다. 다음과 같이 내가 원하는 쿼리 결과는 다음과 같습니다
ColumnA ColumnB
1 abc, pqr, xyz
2 efg, hij
3 asd
나는 쿼리를 통해이를 달성하고자합니다. 누군가의 도움이 날이를 달성 할 수 있습니까?
해결법
-
==============================
1.당신은 연결을 할 수있는 기능이 필요합니다.
당신은 연결을 할 수있는 기능이 필요합니다.
Microsoft Access에서 테이블에 여러 줄을 응축
예 데이터를 사용하여 :
Select T.ColumnA , GetList("Select ColumnB From Table1 As T1 Where T1.ColumnA = " & [T].[ColumnA],"",", ") AS ColumnBItems From Table1 AS T Group By T.ColumnA;
-
==============================
2.여기에 뛰어난 재 링크는 다음과 같습니다 함수를 호출하여 SQL 내에서이 작업을 수행하는 방법. 지침은 매우 분명 & 그냥 복사 & 붙여 넣기 갈 수 있도록 기능이 당신을 위해 작성되었습니다. VB에 대한 지식과 심지어 사람이 쉽게 구현할 수 있습니다 : 관련 기록에서 연결할 값
여기에 뛰어난 재 링크는 다음과 같습니다 함수를 호출하여 SQL 내에서이 작업을 수행하는 방법. 지침은 매우 분명 & 그냥 복사 & 붙여 넣기 갈 수 있도록 기능이 당신을 위해 작성되었습니다. VB에 대한 지식과 심지어 사람이 쉽게 구현할 수 있습니다 : 관련 기록에서 연결할 값
-
==============================
3.이 취득하기가 매우 어려울 수 있습니다. 당신이 함수 쿼리와하지를 수행해야합니다 경우에 실행하는 문제는 하나 개의 컬럼에 연결할 수있는 행의 수를 제한합니다. 내가이를 발견 한 것으로 지금까지 유일한 방법은 문 IIF를 통해입니다.
이 취득하기가 매우 어려울 수 있습니다. 당신이 함수 쿼리와하지를 수행해야합니다 경우에 실행하는 문제는 하나 개의 컬럼에 연결할 수있는 행의 수를 제한합니다. 내가이를 발견 한 것으로 지금까지 유일한 방법은 문 IIF를 통해입니다.
SELECT test1.ColumnA AS ColumnA, First([test1].[ColumnB]) & IIf(Count([test1].[ColumnB])>1,"," & Last([test1].[ColumnB])) AS ColumnB FROM test1 GROUP BY test1.ColumnA;
보고:
ColumnA ColumnB 1 abc,xyz 2 efg,hij 3 asd
이 첫 번째와 마지막을 반환합니다,하지만 난 당신이 기능을 선택 해결할 수있는 작은 일에 확신하지만, 내가 말했듯이 당신은 따라서, 추가 할 각 추가 항목에 대한 문 저번 더 추가해야 한정.
-
==============================
4.표는 그것을 COLUMNA 시퀀스의 고유 한 기본 키를 제공하는 시퀀스 열을 가질 수있다 :
표는 그것을 COLUMNA 시퀀스의 고유 한 기본 키를 제공하는 시퀀스 열을 가질 수있다 :
table: t1 ColumnA sequence ColumnB 1 1 abc 1 2 pqr 1 3 xyz 2 1 efg 2 2 hij 3 1 asd
그리고 크로스 탭이 생성 될 수있다 :
query: x1 TRANSFORM Min([columnB] & ", ") AS Expr1 SELECT t1.columnA FROM t1 GROUP BY t1.columnA PIVOT t1.sequence; columnA 1 2 3 1 abc, pqr, xyz, 2 efg, hij, 3 asd,
그런 다음 최종 쿼리는 열을 결합하고 마지막 쉼표를 제거 할 수 있습니다 :
SELECT x1.columnA, Left([1] & [2] & [3],Len([1] & [2] & [3])-2) AS columnB FROM x1; columnA columnB 1 abc, pqr, xyz 2 efg, hij 3 asd
순서대로 작성 자동화하기 위해 다음 VBA 코드를 사용할 수 있습니다 :
Sub fill_sequence_t1() Dim i: i = 1 Do While DCount("*", "t1", "sequence IS NULL") > 0 DoCmd.RunSQL "SELECT t1.columnA, Min(t1.columnB) AS columnB_min INTO t2" & _ " FROM t1 WHERE t1.sequence IS NULL GROUP BY t1.columnA;" DoCmd.RunSQL "UPDATE t1 INNER JOIN t2 ON (t1.columnA = t2.columnA)" & _ " AND (t1.columnB = t2.columnB_min) SET t1.sequence=" & i CurrentDb.TableDefs.Delete "t2" i = i + 1 Loop End Sub
from https://stackoverflow.com/questions/5517233/ms-access-query-concatenating-rows-through-a-query by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 mysqldump를에서 덤프 파일을 복원 할 수 있습니까? (0) | 2020.03.27 |
---|---|
[SQL] 태그에 대한 데이터베이스 설계 (0) | 2020.03.27 |
[SQL] ID 값에 기초하여 연결할 (0) | 2020.03.27 |
[SQL] PostgreSQL의 "열이 존재하지 않습니다"하지만 실제로 수행 (0) | 2020.03.27 |
[SQL] Access에서 케이스 식 (0) | 2020.03.27 |