네 개의 매개 변수가있는 요구 사항이 있습니다. p1, p2, p3, p4. 사용자는 단일 또는 조합 중 하나를 입력 할 수 있습니다. 나는 그가 합계 및 그룹화하여 입력하는 열만 표시하려고합니다. 다른 열은 제외해야합니다. 어떻게해야합니까? (귀하의 질문은 매우 모호하기 때문에 아니에요 특정 100 %)이 같은Oracle에서 동적으로 합계 및 그룹화하십시오.
3
A
답변
1
뭔가 잘 SQL은 종종 이러한 유형의 매우 저조한 수행, 그러나,
SELECT
CASE WHEN :p1 = 0 THEN p1 ELSE NULL END AS p1,
CASE WHEN :p2 = 0 THEN p2 ELSE NULL END AS p2,
CASE WHEN :p3 = 0 THEN p3 ELSE NULL END AS p3,
CASE WHEN :p4 = 0 THEN p4 ELSE NULL END AS p4
FROM
yourTable
GROUP BY
CASE WHEN :p1 = 0 THEN p1 ELSE NULL END,
CASE WHEN :p2 = 0 THEN p2 ELSE NULL END,
CASE WHEN :p3 = 0 THEN p3 ELSE NULL END,
CASE WHEN :p4 = 0 THEN p4 ELSE NULL END
가 알고 있어야 당신 을 위해 작동 할 수있다 쿼리의.
고정 쿼리 각각에 대해 별도의 계획이 컴파일됩니다. 결과를 생성하는 알고리즘 사용은 그 시점에서 고정되어 있습니다. 매개 변수가 변경되면 다시 컴파일되지 않습니다.
색인에 따라 GROUP BY p1, p2
은 GROUP BY p3, p4
과 근본적으로 다른 계획이 될 수 있으므로 중요합니다.
때문에 코드에서 SQL 문을 다시 생성하는 것이 훨씬 더 효과적 일 수 있습니다.
매개 변수를 사용하여 집계되는 필드를 선택하도록 SQL에 요청하는 대신 매개 변수를 사용하여 새로운 SQL 문을 작성하고 대신 새 SQL 문을 실행하십시오.
0
당신이 MySQL의에서 그룹 CONCAT 같은 것을 사용하려는 경우이 Is there an Oracle SQL query that aggregates multiple rows into one row?
0
이 문제는 동적 SQL을 사용하여 해결할 수 있습니다 도움이 될 수 있습니다. 동적 SQL에서 먼저 입력 매개 변수에 대한 SELECT 문을 구성한 다음 예를 들어 SQL 문을 사용하여 쿼리를 실행할 수 있습니다. 즉시 통보. 동적 SQL 사용 방법은 oracle documentation을 읽어보십시오.
관련 문제
- 1. 매월 필드를 합계 및 동적으로 합산합니다.
- 2. 동적으로 합계 수식을 설정할 때
- 3. 작업을 순서대로 그룹화하십시오.
- 4. 액체의 컬렉션을 필터링하거나 그룹화하십시오.
- 5. 동일한 검색어로 설정하고 그룹화하십시오.
- 6. 요소 사전에 그룹화하십시오.
- 7. 데이터를 빈도별로 그룹화하십시오.
- 8. 브라우저별로 사용자 에이전트를 그룹화하십시오.
- 9. XSLT - 가족을 함께 그룹화하십시오.
- 10. aspose.cells를 사용하여 동적으로 합계 수식을 설정하십시오.
- 11. SQL 합계 및 금액
- 12. 합계 및 나누기 MySQL에서
- 13. 파이썬 CSV 및 합계
- 14. 그룹화 및 합계
- 15. 정렬 및 합계
- 16. 누적 합계 및 비율
- 17. 합계 및 그룹 합류
- 18. SSIS 개수 및 합계
- 19. Oracle에서 대량 수집 및 C#
- 20. MySQL을 사용하여 시간별로 행을 그룹화하십시오.
- 21. 여러 행을 선택하고 ID로 그룹화하십시오.
- 22. Oracle에서 주간 및 월간 집계 저장
- 23. 합계
- 24. 형식으로 여러 선택 항목을 그룹화하십시오.
- 25. 날짜순으로 정렬하고 비슷한 필드를 그룹화하십시오.
- 26. 각 주에서 합계 마일 합계 합계
- 27. SSRS에서 여러 보고서를 하나로 그룹화하십시오.
- 28. 그룹 사용자를 10 명으로 그룹화하십시오.
- 29. 가장 많은 방문객을 날짜별로 그룹화하십시오.
- 30. SSRS : 합계 그룹 합계
사용자는 응용 프로그램 (웹, 데스크탑, 명령 줄, 중요하지 않음)을 통해 데이터를 입력합니다. 응용 프로그램에서 동적으로 쿼리를 작성해야합니다. PLSQL 질문이 아닙니다. –
질문이 명확하지 않습니다. * 요약 및 그룹화 *는 무엇을 의미합니까? 피봇 팅을해야합니까? –
그 쿼리를 만드는 방법을 알고 싶습니다. 그는 24 가지 조합을 입력 할 수 있기 때문에. 예를 들어 그가 p1을 입력하면 p2는 p1, p2로 테이블 그룹에서 p2를 선택하여 표시해야합니다. p2와 유사합니다. 현명한 p1 , p3 그는 입력 할 수 있습니다 .p1, p2, p3, p4 als0.Jus -1.Hop 내가 명확하게 내 요구 사항을 설명 –