나는 같은 것을 할 싶습니다 :Firebird에서 처음 N 개의 행을 집계하는 방법은 무엇입니까?
이CNT=2;
//[edit]
select avg(price) from (
select first :CNT p.Price
from Price p
order by p.Date desc
);
이 작동하지 않는, 파이어 버드는 FIRST에 매개 변수로 :cnt
을 허용하지 않습니다. 첫 번째 CNT 최신 가격을 평균해야합니다. 숫자 2는 변경되므로 하드 코드 할 수 없습니다.
이것은 FOR SELECT 루프로 분류 할 수 있으며 카운트에 도달하면 중단 될 수 있습니다. 그게 최선의 방법일까요? 단일 SQL 문에서이 작업을 수행 할 수 있습니까?
SQL을 문자열로 생성하고 실행하는 것이 적합하지 않습니다. 데이터베이스가 내 SQL 문을 컴파일하는 것이 중요합니다.
파이어 버드는 이것을 "토큰 알 수 없음"으로 거부하고 변수 cnt 앞에':'를 가리킨다. 즉, 'FIRST'에 대한 매개 변수로 변수를 허용하지 않습니다. – jcalfee314
예제가 더 좋으므로 질문을 업데이트했습니다 ... – jcalfee314
': variable'은 분명히 PSQL에서만 작동합니다. 그렇지 않으면 변수를 정의 할 수 없습니다. 또는 공급자를 기반으로 매개 변수를 사용할 수 있습니다. 나는. .NET에서'select first @cnt ... '라고 쓰고'FbCommand'에 매개 변수를 정의 할 수 있습니다. –