programing

그룹 SQL별 실행 총계(Oracle)

telebox 2023. 8. 5. 10:05
반응형

그룹 SQL별 실행 총계(Oracle)

Oracle db에 위치, 제품, 날짜, 금액 필드가 있는 테이블이 있습니다.위치별, 제품별, 날짜별로 총 금액을 조회해보고 싶습니다.저는 제가 원하는 결과를 아래에 예제 표를 넣었습니다.

실행 총계는 얻을 수 있지만 새 위치/제품에 도달하면 재설정할 수 없습니다.지금까지 제가 가지고 있는 코드입니다. 어떤 도움이라도 주시면 감사하겠습니다. 이것은 간단한 해결책이라고 생각합니다.

select a.*, sum(Amount) over (order by Location, Product, Date) as Running_Amt
from Example_Table a

+----------+---------+-----------+------------+------------+
| Location | Product | Date      | Amount     |Running_Amt |
+----------+---------+-----------+------------+------------+
| A        | aa      | 1/1/2013  | 100        | 100        |
| A        | aa      | 1/5/2013  | -50        | 50         |
| A        | aa      | 5/1/2013  | 100        | 150        |
| A        | aa      | 8/1/2013  | 100        | 250        |
| A        | bb      | 1/1/2013  | 500        | 500        |
| A        | bb      | 1/5/2013  | -100       | 400        |
| A        | bb      | 5/1/2013  | -100       | 300        |
| A        | bb      | 8/1/2013  | 250        | 550        |
| C        | aa      | 3/1/2013  | 550        | 550        |
| C        | aa      | 5/5/2013  | -50        | 600        |
| C        | dd      | 10/3/2013 | 999        | 999        |
| C        | dd      | 12/2/2013 | 1          | 1000       |
+----------+---------+-----------+------------+------------+

아, 제가 알아낸 것 같아요.

select a.*, sum(Amount) over (partition by Location, Product order by Date) as Running_Amt
from Example_Table a

Oracle 10g book의 Advanced SQL Functions에서 다음과 같은 예가 나와 있습니다.

SELECT dte "Date", location, receipts,
SUM(receipts) OVER(ORDER BY dte
ROWS BETWEEN UNBOUNDED PRECEDING
AND CURRENT ROW) "Running total"
FROM store
WHERE dte < '10-Jan-2006'
ORDER BY dte, location

제가 모든 답을 타이핑하거나 제가 배운 곳으로 보내드릴 수 있습니다 :)

이것을 확인해 보세요, 당신이 무엇을 하려고 하는지 정확히 설명해 줍니다.

http://www.codeproject.com/Articles/300785/Calculating-simple-running-totals-in-SQL-Server

언급URL : https://stackoverflow.com/questions/22155401/running-total-by-group-sql-oracle

반응형