여러 행을 단일 행으로 변환하는 방법

다크 랜턴

이것은 참가자를위한 설문지가 포함 된 데이터베이스를 가지고있는 연구 데이터베이스입니다. 이 설문지는 연구에서 3 번 참가자에게 요청됩니다 (P1 / P2 / P3).

설문지의 테이블 구조

설문지 1.

+--+-------+--------+--+--+--+--+--+---
|PK|Part_ID|Phase_Id|Q1|q2|q3|q4|q5|...
+--+-------+--------+--+--+--+--+--+---
|1 |A010   |P1      |1 |0 |1 |0 |1 |...
+--+-------+--------+--+--+--+--+--+---
|2 |A010   |P2      |0 |1 |0 |1 |0 |...
+--+-------+--------+--+--+--+--+--+---
|3 |A010   |P3      |1 |0 |1 |0 |1 |...
+--+-------+--------+--+--+--+--+--+---

각 참가자에 대해 등등.

모든 참가자는 최대 3 단계를 가지며 더 적을 수 있습니다. 테이블 구조로 인해 열 수는 항상 동일합니다.

연구원은 분석 프로그램 (SPSS)에 입력하기 위해 모든 데이터를 한 줄로 가져 오려고합니다. 따라서 출력 구조는 다음과 같아야합니다.

+-------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|Part_ID|P1_Q1|P1_q2|P1_q3|P1_q4|P1_q5|P2_Q1|P2_q2|P2_q3|P2_q4|P2_q5|P3_Q1|P3_q2|P3_q3|P3_q4|P3_q5|
+-------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|A010   |1    |0    |1    |0    |1    |0    |1    |0    |1    |0    |1    |0    |1    |0    |1    |
+-------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+

SQL Server 2008 Express 사용.

몇 가지 피벗 및 언 피벗 예제를 살펴 보았지만 올바른 방법이라고 생각하지 않습니다 (집계가 필요하지 않음).

그래서 어떤 포인터라도 좋을 것입니다.

문안 인사

Roger (데모 형식이 제대로 나오기를 바랍니다).

페텀

당신은 UPIVOT당신의 테이블을 먼저 할 수 있고 PIVOT다시 할 수 있습니다.

SELECT Part_Id, 
       P1_Q1, P1_Q2, P1_Q3, P1_Q4, P1_Q5,
       P2_Q1, P2_Q2, P2_Q3, P2_Q4, P2_Q5,
       P3_Q1, P3_Q2, P3_Q3, P3_Q4, P3_Q5
  FROM
(
  SELECT Part_ID, Phase_Id + '_' + Question Question, Value
    FROM 
  ( 
    SELECT Part_ID, Phase_Id, q1, q2, q3, q4, q5
      FROM Table1
  ) s
  UNPIVOT
  ( 
    Value FOR Question IN (q1, q2, q3, q4, q5) 
  ) u
) s
PIVOT
(
  MAX(Value) FOR Question IN 
  (
    P1_Q1, P1_Q2, P1_Q3, P1_Q4, P1_Q5,
    P2_Q1, P2_Q2, P2_Q3, P2_Q4, P2_Q5,
    P3_Q1, P3_Q2, P3_Q3, P3_Q4, P3_Q5
  )
) p

또는 조건부 집계를 사용하여

SELECT Part_Id,
       MAX(CASE WHEN Phase_id = 'P1' THEN Q1 END) P1_Q1,
       MAX(CASE WHEN Phase_id = 'P1' THEN Q2 END) P1_Q2,
       MAX(CASE WHEN Phase_id = 'P1' THEN Q3 END) P1_Q3,
       MAX(CASE WHEN Phase_id = 'P1' THEN Q4 END) P1_Q4,
       MAX(CASE WHEN Phase_id = 'P1' THEN Q5 END) P1_Q5,
       MAX(CASE WHEN Phase_id = 'P2' THEN Q1 END) P2_Q1,
       MAX(CASE WHEN Phase_id = 'P2' THEN Q2 END) P2_Q2,
       MAX(CASE WHEN Phase_id = 'P2' THEN Q3 END) P2_Q3,
       MAX(CASE WHEN Phase_id = 'P2' THEN Q4 END) P2_Q4,
       MAX(CASE WHEN Phase_id = 'P2' THEN Q5 END) P2_Q5,
       MAX(CASE WHEN Phase_id = 'P3' THEN Q1 END) P3_Q1,
       MAX(CASE WHEN Phase_id = 'P3' THEN Q2 END) P3_Q2,
       MAX(CASE WHEN Phase_id = 'P3' THEN Q3 END) P3_Q3,
       MAX(CASE WHEN Phase_id = 'P3' THEN Q4 END) P3_Q4,
       MAX(CASE WHEN Phase_id = 'P3' THEN Q5 END) P3_Q5
  FROM Table1
 GROUP BY Part_Id;

산출:

| PART_ID | P1_Q1 | P1_Q2 | P1_Q3 | P1_Q4 | P1_Q5 | P2_Q1 | P2_Q2 | P2_Q3 | P2_Q4 | P2_Q5 | P3_Q1 | P3_Q2 | P3_Q3 | P3_Q4 | P3_Q5 | 
| --------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- |- ------ | ------- | ------- | ------- | 
| A010 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |

다음은 SQLFiddle 데모입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

R에서 여러 행을 ID로 단일 행으로 변환하는 방법

분류에서Dev

여러 행을 포함하는 단일 열을 행으로 변환하는 방법

분류에서Dev

MySQL에서 여러 행 (하나의 열)을 단일 행으로 변환하는 방법

분류에서Dev

SQL에서 단일 행을 여러 행으로 분할하는 방법

분류에서Dev

T-SQL 여러 행을 단일 행으로 결합하는 방법

분류에서Dev

MSSQL 2012-여러 행과 열을 단일 행으로 결합하는 방법

분류에서Dev

SqlServer에서 여러 행의 단일 열을 여러 열이있는 단일 행으로 조인하는 방법

분류에서Dev

여러 결과 행을 각 값을 사용하여 단일 행 SQL로 변환하는 방법

분류에서Dev

여러 행을 단일 행과 열로 롤업하는 방법

분류에서Dev

SQLite는 단일 행을 여러 행으로 변환

분류에서Dev

단일 열에 대해 여러 행을 단일 행으로 병합하는 방법은 무엇입니까?

분류에서Dev

여러 값의 단일 행을 여러 개별 행으로 분할하는 방법

분류에서Dev

MySql을 사용하여 여러 행을 단일 행으로 쿼리하는 방법은 무엇입니까?

분류에서Dev

MySql을 사용하여 여러 행을 단일 행으로 쿼리하는 방법은 무엇입니까?

분류에서Dev

레이블을 고려하여 여러 행을 단일 행으로 병합하는 방법

분류에서Dev

Postgresql의 열로 단일 행을 여러 행으로 변환

분류에서Dev

Oracle SQL은 여러 열이있는 단일 행을 여러 행으로 변환

분류에서Dev

쉼표 구분 기호를 사용하여 여러 행의 값을 단일 행으로 결합하는 방법

분류에서Dev

여러 열 / 행을 단일 열 / 다중 행으로 변환

분류에서Dev

여러 행에 동일한 키가있는 사전을 데이터 프레임으로 변환하는 방법

분류에서Dev

여러 행을 가져 와서 일부를 열로 변환하는 방법

분류에서Dev

Excel에서 여러 행의 값을 단일 행으로 결합하는 방법은 무엇입니까?

분류에서Dev

Oracle에서 여러 행을 단일 행으로 결합하는 방법은 무엇입니까?

분류에서Dev

Linux에서 패턴으로 여러 실행 파일을 실행하는 방법

분류에서Dev

NA를 무시하고 단일 행을 여러 행으로 변환

분류에서Dev

PostgreSql에서 단일 행을 여러 번 선택하는 방법

분류에서Dev

목록을 여러 열이있는 행으로 변환하는 방법

분류에서Dev

postgresql에서 열 값을 단일 행 값으로 변환하는 방법

분류에서Dev

단일 행에 대한 여러 열 값을 기반으로 열을 파생하는 방법

Related 관련 기사

  1. 1

    R에서 여러 행을 ID로 단일 행으로 변환하는 방법

  2. 2

    여러 행을 포함하는 단일 열을 행으로 변환하는 방법

  3. 3

    MySQL에서 여러 행 (하나의 열)을 단일 행으로 변환하는 방법

  4. 4

    SQL에서 단일 행을 여러 행으로 분할하는 방법

  5. 5

    T-SQL 여러 행을 단일 행으로 결합하는 방법

  6. 6

    MSSQL 2012-여러 행과 열을 단일 행으로 결합하는 방법

  7. 7

    SqlServer에서 여러 행의 단일 열을 여러 열이있는 단일 행으로 조인하는 방법

  8. 8

    여러 결과 행을 각 값을 사용하여 단일 행 SQL로 변환하는 방법

  9. 9

    여러 행을 단일 행과 열로 롤업하는 방법

  10. 10

    SQLite는 단일 행을 여러 행으로 변환

  11. 11

    단일 열에 대해 여러 행을 단일 행으로 병합하는 방법은 무엇입니까?

  12. 12

    여러 값의 단일 행을 여러 개별 행으로 분할하는 방법

  13. 13

    MySql을 사용하여 여러 행을 단일 행으로 쿼리하는 방법은 무엇입니까?

  14. 14

    MySql을 사용하여 여러 행을 단일 행으로 쿼리하는 방법은 무엇입니까?

  15. 15

    레이블을 고려하여 여러 행을 단일 행으로 병합하는 방법

  16. 16

    Postgresql의 열로 단일 행을 여러 행으로 변환

  17. 17

    Oracle SQL은 여러 열이있는 단일 행을 여러 행으로 변환

  18. 18

    쉼표 구분 기호를 사용하여 여러 행의 값을 단일 행으로 결합하는 방법

  19. 19

    여러 열 / 행을 단일 열 / 다중 행으로 변환

  20. 20

    여러 행에 동일한 키가있는 사전을 데이터 프레임으로 변환하는 방법

  21. 21

    여러 행을 가져 와서 일부를 열로 변환하는 방법

  22. 22

    Excel에서 여러 행의 값을 단일 행으로 결합하는 방법은 무엇입니까?

  23. 23

    Oracle에서 여러 행을 단일 행으로 결합하는 방법은 무엇입니까?

  24. 24

    Linux에서 패턴으로 여러 실행 파일을 실행하는 방법

  25. 25

    NA를 무시하고 단일 행을 여러 행으로 변환

  26. 26

    PostgreSql에서 단일 행을 여러 번 선택하는 방법

  27. 27

    목록을 여러 열이있는 행으로 변환하는 방법

  28. 28

    postgresql에서 열 값을 단일 행 값으로 변환하는 방법

  29. 29

    단일 행에 대한 여러 열 값을 기반으로 열을 파생하는 방법

뜨겁다태그

보관