2013-06-05 4 views
0

그래, 내가 봤 거든 googled 여전히 얻을 수 없다.Select Top (1), Where 절이 포함 된 집계 함수

효과적으로, 몇백 개의 행을 포함하는 테이블에서 한 열에 고유 한 idendtifier (PK가 아니며 실제로는 고유하지 않지만 헤이)가 있고 다른 테이블에는 숫자 값이 있습니다.

고유 식별자 (UI)는 해당 테이블 내에서만 고유하며 가장 높은 숫자는 가장 최근의 테이블 항목을 의미하는 점진적인 정렬입니다.

효과적으로, WHERE 절을 사용하여 관련 행으로 행을 분리 한 다음, 해당 행의 가장 최근 UI와 그 행 값의 합계를 가져와야합니다.

UI가 1, 3, 5, 7, 10이고 집계 함수의 해당 값이 100, 300, 500, 700 및 1000 인 경우 쿼리 결과로 필요한 것은 UI 10, 합계 2600입니다. .

DB 내가이 acheive 어떻게 SQL2000

입니까?

+1

나는 당신의 질문을 이해하지 못합니다. 테이블이 실제로 어떻게 생겼는지, 그리고 끌어 올 데이터를 좀 더 자세히 설명해 주시겠습니까 ?? –

+0

[그룹당 최대 n 개]처럼 들릴 수 있습니다. (http://stackoverflow.com/search?q=greatest-n-per-group) 관련 항목으로 연결될 수 있습니다 .. – user2246674

+0

@ 존, 알았어. 시험. 테이블의 한 열에는 금융 거래와 관련된 통화 금액이 기록됩니다. 다른 열에는 재무 적 가치가 기록됩니다. 모든 거래가 동일한 테이블에 기록되며 모든 거래에는 기록 된 모든 금융 거래에 대해 증가하는 참조 번호가 제공됩니다. 그래서 당신은 ref 1, value 1000, description current account를 가질 수 있고 다음 행은 ref 1, value -1000, description savings account 일 수 있습니다. 이 중 몇 가지를 수행 한 후에는 보고서가 필요합니다. 이 아이디어는 기준에 따라 값을 합산하고 마지막 단락을 얻음으로써 단락을 확인할 수 있습니다. – user155369

답변

0

표의 모든 항목이 합쳐져 최대 식별자와 함께 반환되어야하는 것처럼 들립니다. 이것이 당신에게 효과가 있습니까?

Select Max(ID), Sum(Number) from TableName 

ID는 고유 식별자 열 이름입니다. Number는 숫자를 보유하는 열 이름입니다. TableName은 테이블 이름입니다.

+0

그것은 테이블의 모든 항목이 아니지만 where 절로 제한된 테이블의 일부 항목입니다 (시나리오가 긴 항목 일 수 있음). 시나리오는 실제로 상당한 규모의 계정 패키지에 이르기까지, 합계를 합산하기를 원했을뿐만 아니라 관련 "고유 참조 번호"를 컷오프 포인트로 가져야했습니다. 즉, 보고서를 나중에 다시 실행해야하는 경우 WHRN <레코드 된 URN을 추가하면 동일한 기준을 충족하는 기록 된 추가 트랜잭션을 제외하고 동일한 보고서가 다시 작성됩니다. – user155369

+0

MAX를 사용하는 것이 효과가 있을지 모르겠지만 필자는 그렇게 생각하지는 않았지만 관련 기준과 마지막으로 기록 된 참조 번호를 충족하는 값의 합계가 아닌 여러 행을 다시 얻을 것으로 예상했기 때문에 그렇지 않을 것이라고 생각합니다. – user155369

+0

나는 그것을 다시 가져 가라. MAX()는 정상적으로 작동합니다. 감사합니다 – user155369