2013-09-07 1 views
2

DB2 테이블을 쿼리하고 별도의 열에 select 문에서 반환 된 모든 행 외에 쿼리의 모든 결과를 얻고 싶습니다.DB2가있는 select 절에서 행 수 계산

예를 들어 테이블에 'id'및 'user_id'열이 포함되어 있고 100 개의 행이 있다고 가정하면 쿼리 결과는 다음 형식으로 나타납니다. (id) | (user_id) | 100.

'group by'절을 쿼리에 사용하고 싶지 않습니다. (다만 당신이 내가 무엇을 요구하고 있는지에 대해 혼란 스러울 때) 또한 여기에서 예를 찾을 수 없었다 : http://mysite.verizon.net/Graeme_Birchall/cookbook/DB2V97CK.PDF.

또한 이러한 결과 (값 + 개수)를 모두 얻는 더 효율적인 방법이 있다면 어떤 아이디어라도 환영 할 것입니다. 내 환경에서는 DB2 용 ODBC 어댑터가없는 zend framework 1.x를 사용합니다. (문제 http://framework.zend.com/issues/browse/ZF-905를 참조하십시오.)

답변

3

나는 당신이 요구하는 것을 이해한다면이 당신이 원하는, 다음 3 ~ 5 레코드가 가정하면, 원하는 출력의 실제 예제를 제공하시기 바랍니다 아닌 경우, 대답은

select t.*, g.tally 
    from mytable t, 
     (select count(*) as tally 
      from mytable 
     ) as g; 

해야한다 그래서 우리는 당신이 원하는 것을 정확히 볼 수 있습니다.

+0

이것은 내가 결과 집합의 측면에서 찾고 있었는데, 답변 주셔서 감사합니다. 그러나, 나는 오히려 분석 기능을 사용하는보다 효율적인 솔루션을 기대했다. 2를 수행하는 것보다 선택하십시오 –

+0

OLAP 함수가 커버 아래에서 덜한 일을하고 있다는 느낌을주는 이유는 무엇입니까? 이식성이 있습니다. 선호하는 두 번째 방법을 제공합니다. 그렇지 않은 경우, 사용중인 DB2 플 '폼 (-i, LUW 또는 z/OS)을 표시해야합니다. – WarrenT

0

당신이를 위해 창/분석 기능을 사용 :이 쿼리의 어떤 종류의 당신이 작동합니다

select t.*, count(*) over() as NumRows 
from table t; 

.

+0

이 오류가 발생했습니다. 'over()'에 대해 불평하고있는 것으로 보입니다. 메시지 : [SQL0104] 토큰 (유효하지 않습니다.) 유효한 토큰 :, 원인 : .... : A 토큰에서 구문 오류가 발견되었습니다. (토큰 (유효한 토큰이 아닙니다. 유효한 토큰의 일부 목록은 FROM INTO입니다.)이 목록은 명령문이 토큰에 맞다고 가정합니다. 구문의 구문이 시점에서 유효합니다 나타납니다. –

관련 문제