2012-11-14 5 views
0

SQL에 약간의 문제가 있습니다. SQL에서 출력 사용자 지정

나는
XSTOREATTR_ID STORE_ID STRINGVALUE FLOATVALUE 
    0    123   asdf   null 
    0    124   awer   null 
    1    123   null   20 
    1    124   null   30 

내가 내 SQL의 출력이

XSTOREATTR_ID  123  124 
    0    asdf  awer 
    1    20   30 

사람이 같은 날 도와 주실 수있을하려면 아래의 SQL 출력이? 피벗 (Pivot)에서 할 수 있다는 것을 알고 있지만이 출력을 얻으려고 애를 쓰고 있습니다.

도움을 주시면 매우 감사하겠습니다 !!!

+0

결과를 상세하게 작성하십시오. 예제에서 논리적 인 patern을 찾지 못하여 – Jester

+1

accepance 비율로 작업하는 것 외에 일부 작업 쿼리를 게시하는 것 이외에 결과가 정확하지 않을 경우 시작 지점이 될 수 있습니다. 솔루션에서 멀지 않은 곳. 또한 몇 가지 테스트 데이터를 제공하십시오. [SQL Fiddle online tool] (http://sqlfiddle.com/#!3)을 사용하여이 모든 정보를 제공 할 수 있습니다. – Yaroslav

+0

@JoeGJoseph - 질문에 대한 제안 사항을 제공해 주시겠습니까? 그래, 난 당신의 요청에 따라 대답 한 질문을 받아 들였습니다 –

답변

0

DB2는 매우 동적 열 이름을 설정하기 위해 할 수있는 일에 제한됩니다

STORE_ID에 대한 몇 가지 다른 값을 가질 경우, 하드 코딩 된 쿼리를 만들 수 있습니다

with vals as (
    select xstoreattr_id, 
      store_id, 
      case when xstoreattri_id = 0 
       then stringvalue 
       else char(floatvalue) 
      end as value 
     from table 
) 
select xstoreattri_id, 
     max(case when store_id=123 then value else null end) as 123, 
     max(case when store_id=124 then value else null end) as 124 
       --and so on... 
    from vals 
    group by xstoreattr_id 

을 매우 우아하지는 않지만 빠른 작업에는 종종 유용합니다.

그 밖에도 순수 SQL 솔루션을 사용하려면 dynamic SQL을 사용해야합니다.이 문자열은 SQL 문을 문자열로 작성한 다음 실행합니다. 이건 지저분 해. 가능한 경우 외부 프로그래밍 언어를 사용하여 이와 같은 작업을 수행하는 것이 좋습니다.

+0

안녕하세요 , 당신의 쿼리는 나에게 예상되는 출력을 줄 수는 있지만 하드 코딩 할 수없는 1200 xstoreattr ID가 있습니다. 같은 다른 방법이 있습니까? –

+0

@arvind_cool, 그 경우에는 귀하의 질문을 이해할 수 있을지 잘 모르겠습니다. 소스 테이블에'STRINGVALUE','FLOATVALUE' 등과 같은 1200 개의 컬럼이 있음을 의미합니까? 아니면 1200 STORE_ID 값을 의미합니까? 어느 경우이든, 그러한 넓은 테이블을 갖는 것은 실제로 훌륭한 디자인이 아닙니다. 어쩌면 해결하려는 문제를 설명하기 위해 질문을 업데이트하면보다 나은 해결책을 제시 할 수 있습니다. – dan1111

+0

안녕하세요 Dan, 우리는 STRINGVALUE, FLOATVALUE 및 INTEGERVALUE 열의 1200 가지 값 조합을 갖지만 store_id는 약 50 가지 다른 값 조합을가집니다. –

관련 문제