2011-01-26 3 views
0

더 큰 데이터 세트로 작은 데이터 하위 세트를 반환하고 싶습니다. 단순히 리턴 할 때 문자열이어야합니다. ... 이것이 가능한가?DB2 - 복수 행이있는 서브 쿼리로 상관 행으로 반환

내 시나리오 - 나는 사람들의 목록을 가지고 있고, 나는 그 목록을 반환하고 싶은 말은 수 - ...하지만 그들은 세 이전 날짜에 '항목'을 만든 것으로 정보의 선전을 포함

내가 할 수있는, 루프를 주 집합에 추가하고 현재 사용자가 '항목'을 만든 마지막 세 날짜에 대한 db를 다시 쿼리 할 수 ​​있습니다. 그러나 이로 인해 DB에 대한 추가 호출이 많이 발생합니다 .- 매우 비효율적입니다.

정보에 GROUP을 입력하면됩니다. (내 의견에는 아무런 증거가 없습니다.) 그러나 이것은 출력용 루프의 루프에 의존하기 때문에 다소 낭비 적이라고 생각합니다.

나는이 "마지막 세"항목 날짜를 하위 쿼리의 간단한 문자열로 반환하고 싶습니다. 데이터 세트에 원하는 데이터의 '문자열'표현이 포함될 수 있도록 ... 그러므로 내 루프 출력은 다음

내가 SOFAR이 무슨 ... DB를 내 쿼리처럼 ... 아주 효율적인 것 -하지만 폭탄, 나는 ... 이유를 찾을 수 있습니다

SELECT 
     U.intID, 
     U.strName, 
     (
      SELECT TRIM(CAST(CAST(EO.intData AS CHAR(25)) AS VARCHAR(25))) || ' on ' || TRIM(CAST(EO.dateRecorded AS VARCHAR(25))) || '<br/>' 
      FROM metrics EO 
      WHERE EO.fkID = U.intID 
      ORDER BY EO.dateRecorded DESC 
      FETCH FIRST 3 ROWS ONLY 
     ) AS strLast3 
    FROM live.tblUsers U 
+1

당신은 누군가가 당신의 다른 질문 중 하나에 대한 가능한 답변을 주어인지 확인해야합니다; 그들이 * 당신의 판단에 * 있다면, 그 옆에있는 체크 표시를 클릭하여 "대답"이라고 표시하면 다른 사람들이 좋은 해결책이 무엇인지 이해하는 데 도움이됩니다. 또한 평판 시스템을 통해 응답자에게 보상하고, (게임과 같이 대표를하고 싶은) 사람들이 더 많은 답변을 제공하도록 장려합니다. –

+0

(아니요,이 질문에 대한 대답을 모르겠습니다. 고급 SQL 쿼리는 초보자입니다.) –

+0

어떤 버전의 DB2를 사용하고 있으며 어떤 플랫폼에서 사용하고 있습니까? –

답변

0

나는 그 종류의 것에 UDF()를 사용한다. 기본적으로 intID를 매개 변수로 사용하는 SQL 함수를 작성합니다. 그런 다음이 함수는 해당 ID에 대한 메트릭을 찾아 문자열에 모두 반환합니다. 이런 식으로 당신은 길 밖으로 못 생기고 문자열 조작을 유지하고 메인 코드를이 같은 작업을 수행 할 수 있습니다

SELECT U.intID, 
     U.strName, 
     GetMetrics(U.intID) 
FROM live.tblUsers U