가 MAX가 있다는 간단한 쿼리에게 내가 아는 사실 내 경우저장 프로 시저가 :
SELECT SUM(Field1), Field2 FROM TableName GROUP BY Field2
를 취할 수 있습니다 요약 resilts로 행을 출력 매개 변수에 배치 FIELD2 5 개 고유 값 (1-5) 따라서이 쿼리는 최대 5 개의 행을 반환합니다 (예를 들어 Field2 값이 2 인 레코드가없는 경우 더 적을 수 있음).
흥미로운 점은 속한 Field2
값을 기준으로 SUM(field1)
의 값을 OUTPUT
매개 변수에 저장하는 것입니다. 현재 스토어드 프로 시저 (단순화)에서이 작업을 수행합니다.
SELECT @prm1 = SUM(Field1) FROM TableName WHERE Field2=1
SELECT @prm2 = SUM(Field1) FROM TableName WHERE Field2=2
SELECT @prm3 = SUM(Field1) FROM TableName WHERE Field2=3
SELECT @prm4 = SUM(Field1) FROM TableName WHERE Field2=4
SELECT @prm5 = SUM(Field1) FROM TableName WHERE Field2=5
더 좋은 방법이 있나요?
편집 :이 저장 프로 시저가 10 개 이상의 쿼리를 실행하고 각각에서 요약을 가져옵니다. 클라이언트와 별도로 10 개 이상의 다른 쿼리를 실행하지 않도록 결정했지만 하나의 저장 프로 시저에 저장 한 다음 출력 매개 변수를 통해 결과를 반환합니다. 이러한 쿼리는 일괄 적으로 만 호출 할 목적으로는 사용되지 않습니다. 그러나 이것이 좋은 생각이 아니라고 생각한다면, 나는 당신의 주장을 경청 할 것입니다.
데모? 왜 그냥'SELECT'의 결과를 돌려주지 않는가? 이 출력물을 어떻게 사용하고 있는지 질문에 포함시켜야합니다. – EkoostikMartin
약 12-15 개의 요약 값을 계산하여 응용 프로그램에 반환하기 때문에. 따라서 내 응용 프로그램에서 12 개의 다른 쿼리를 실행하는 대신 하나의 저장 프로 시저를 통해 실행하고 결과를 출력 매개 변수를 통해 응용 프로그램에 전달합니다. – Goran