2014-05-19 2 views
0

로 리턴 행 값 I 테이블이 있습니다SQL 쿼리 - 열

Part X Y 
ABC  1 10 
ABC  2 20 
ABC  3 30 
ABC  4 40 
ABC  5 x 
ABC  6 x 
XYZ  1 50 
XYZ  2 60 
XYZ  3 70 
XYZ  4 80 
XYZ  5 x 
XYZ  6 x 
ETC  1 90 
ETC  2 100 
ETC  3 110 

ID가 다음과 같은 방법으로이 데이터를 선택하려면 :이게 가능

Part 1 2 3 4 
ABC  10 20 30 40 
XYZ  50 60 70 80 
ETC  90 110 120 130 

를?

주 :

  • FieldX 값 1이 들어있는 테이블에서 결과 = 1, 2, 3, 4 = 필드 x에 대한

    • 헤더 - 18, 나는 1-4
    • 에만 관심이 있어요
    • 나중에이 정보를 제품 테이블에 결합하여 제품에 기반한 결과를 지정할 수 있습니다. 공급 업체 필드.

    하위 쿼리가이 영역에서 경험할 수있는 방법 일 수 있다고 생각합니다. 어떤 도움

    덕분에 이전 답변 해제 방법 것 같이 나는 단지이 게시하도록하겠습니다

  • +0

    이것을 피벗이라고하며 솔루션은 사용중인 데이터베이스에 따라 다릅니다. 예를 들어, SQL Server에는 PIVOT/UNPIVOT 명령이 있고, 다른 명령은 GROUP BY와 조건의 조합을 사용합니다. 어떤 데이터베이스를 사용하고 있습니까? –

    +0

    http://stackoverflow.com/questions/24470/sql-server-pivot-examples -이 질문에 많은 답변이 있습니다 ... – sgeddes

    +0

    @Panagiotis Kanavos SQL Server 2008을 사용 중입니다. 피벗에 감사드립니다. 암시. 조사하고 적절한 답을 표시하겠습니다. – FrostyM8

    답변

    0

    을 제공했다. 당신의 RDBMS을 모른 채, 당신은 CASEMAX을 사용할 수 있습니다 : 당신이 RDBMS가 그것을 지원하는 경우, 당신은 PIVOT 명령을 사용할 수 있습니다

    SElECT part, 
        MAX(CASE WHEN X = 1 THEN Y END) Y1, 
        MAX(CASE WHEN X = 2 THEN Y END) Y2, 
        MAX(CASE WHEN X = 3 THEN Y END) Y3, 
        MAX(CASE WHEN X = 4 THEN Y END) Y4 
    FROM YourTable 
    GROUP BY part 
    

    .

    +0

    피벗을 사용하면 더 좋은 방법 일 수 있지만 불행히도 내 데이터베이스에서는 사용할 수 없습니다. 그런 다음 위의 제안을 사용하여 작동하도록 관리했습니다. 모든 제안에 많은 감사를드립니다 - 답변으로 표시 – FrostyM8