2012-08-13 2 views
0

Microsoft SQL Server 2008 R2를 사용 중입니다. 나는 3 개의 테이블에 가입하고 기간 (개월)별로 그룹화하고 각 기간 및 최대 환율에 대한 모든 금액의 합계를 얻고 싶습니다. 아래에이 SQL 문이 있습니다. 위의 질의에서SQL 합계 3 개 테이블 중에서 선택하십시오.

SELECT T2.Name AS Period, T1.LineTotal AS Amount, T0.DocRate AS ExchangeRate 
FROM OINV T0 INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry 
INNER JOIN dbo.OFPR AS t2 ON T1.FinncPriod = T2.AbsEntry 
WHERE T0.DocStatus = 'O' 

예 결과 :

Period   Amount  ExchangeRate 
Year 2012-01 500.000000 83.000000 
Year 2012-01 1000.000000 1.000000 
Year 2012-02 2000.000000 1.000000 
Year 2012-02 3000.000000 1.000000 
Year 2012-02 2500.500000 1.000000 
Year 2012-03 500.000000 1.000000 
Year 2012-03 1500.000000 94.000000 
Year 2012-04 4000.000000 1.000000 
Year 2012-04 2000.000000 1.000000 
Year 2012-04 2000.000000 1.000000 
나는 다음과 같은 결과를 얻을 싶습니다

:

Period   Amount  ExchangeRate 
Year 2012-01 1500.000000 83.000000 
Year 2012-02 7500.000000 1.000000 
Year 2012-03 2000.000000 94.000000 
Year 2012-04 8000.000000 1.000000 

어떻게 내 쿼리 위의 결과를 얻기를 수정합니까를?

답변

1

이 시도 :

그냥

SELECT T2.NAME AS PERIOD 
     , SUM(T1.LINETOTAL) AS AMOUNT 
     , MAX(T0.DOCRATE) AS EXCHANGERATE 
FROM OINV T0 INNER JOIN INV1 T1 
     ON T0.DOCENTRY = T1.DOCENTRY 
     INNER JOIN DBO.OFPR AS T2 
     ON T1.FINNCPRIOD = T2.ABSENTRY 
WHERE T0.DOCSTATUS = 'O' 
GROUP BY T2.NAME 
1

에 의해 그룹을 SUM, MAX 및 GROUP BY를 사용해보십시오.

뭔가

같은
SELECT T2.Name AS Period, 
     SUM(T1.LineTotal) AS Amount, 
     MAX(T0.DocRate) AS ExchangeRate 
FROM OINV T0 INNER JOIN 
     INV1 T1 ON T0.DocEntry = T1.DocEntry INNER JOIN 
     dbo.OFPR AS t2 ON T1.FinncPriod = T2.AbsEntry 
WHERE T0.DocStatus = 'O' 
GROUP BY T2.Name 
관련 문제