에서 한 행에 두 행을 결합하는 방법은 SQL에 의해 반환 된 아래에 언급 한 형태의 결과 집합이 있습니다테라 데이타
ID Key
1 A
2 A
3 A
이제 내 요구 사항은 아래의 형태로 데이터를 표시하는 것입니다
Key ID1 ID2 ID3
A 1 2 3
SQL을 어떻게 구축 할 것인가? 테라 데이타 14.10로
에서 한 행에 두 행을 결합하는 방법은 SQL에 의해 반환 된 아래에 언급 한 형태의 결과 집합이 있습니다테라 데이타
ID Key
1 A
2 A
3 A
이제 내 요구 사항은 아래의 형태로 데이터를 표시하는 것입니다
Key ID1 ID2 ID3
A 1 2 3
SQL을 어떻게 구축 할 것인가? 테라 데이타 14.10로
창있는 골재 기반 솔루션 설명해
SELECT
key,
-- value from 1st row = current row
ID AS ID1,
-- value from next row, similar to LEAD(ID, 1) Over (PARTITION BY Key ORDER BY ID)
Min(ID)
Over (PARTITION BY Key
ORDER BY ID
ROWS BETWEEN 1 Following AND 1 Following) AS ID2 ,
-- value from 3rd row
Min(ID)
Over (PARTITION BY Key
ORDER BY ID
ROWS BETWEEN 2 Following AND 2 Following) AS ID3
FROM mytable
QUALIFY -- only return the 1st row
Row_Number()
Over (PARTITION BY key
ORDER BY ID) = 1
는 PIVOT
기능이없는 그 가정마다 독특한 key
를 들어, (의견에서 언급 한 바와 같이) 이하 3 IDs
, 당신이 원하는을 얻기 위해 다음과 같이 row_number()
및 aggregate
기능을 사용할 수있을 것 결과.
SELECT
key1,
MAX(CASE WHEN rn = 1 THEN ID END) AS ID1,
MAX(CASE WHEN rn = 2 THEN ID END) AS ID2,
MAX(CASE WHEN rn = 3 THEN ID END) AS ID3
FROM
(SELECT
t.*,
ROW_NUMBER() OVER (PARTITION BY key1 ORDER BY ID) AS rn
FROM table1 t) t
GROUP BY key1;
결과 : 단일 기록 단계와
+------------+-----+-----+-----+
| key1 | id1 | id2 | id3 |
+------------+-----+-----+-----+
| A | 1 | 2 | 3 |
+------------+-----+-----+-----+
구글 피봇 테라한다. – jarlh
쿼리를 작성할 때 얼마나 많은 열이 있는지 알고 계십니까? 항상 3 가지 값입니까? 그렇다면 PIVOT 또는 조건부 집계를 사용할 수 있습니다. 일반적으로 이러한 표시는 SQL에서는하지 않지만 앱이나 웹 사이트에서는 가능합니다. –
이와 같이 표시해야하는 열 ID는 하나뿐입니다. –