2014-01-22 3 views
-1

문제는 두 개의 다른 테이블에서 합계 값을 가져 오려고 시도하지만 테이블 3 결과의 조건을 사용하면 잘못된 합계 결과로 인해 손상됩니다. 그래서 t2Select sum() as t1 (select sum()...) 시도하고 나는 t1t2 결과가 정확 이런 식으로 t1t2을, 합계를 그래서 거기에 그것은 결과를SQL SERVER SELECT 합계 값

T1 (340)
(T2)을 제공

SELECT 
    SUM(daa.[price]) AS t1, 
    (
     SELECT SUM(dap.[price]) AS suma 
     FROM fydtr.dbo.[sales] AS dap, 
      [fydtr].[dbo].[work info] AS di 
     WHERE YEAR(di.[end of work datetime]) = 2013 
      AND MONTH(di.[end of work datetime]) = 12 
      AND di.[state] = 'e' 
      AND di.[reg. nr.] = dap.[reg. nr.] 
) AS t2 
FROM [fydtr].[dbo].[work sale] AS daa, 
    fydtr.dbo.[work info] AS dbi 
WHERE YEAR(dbi.[end of work datetime]) = 2013 
    AND MONTH(dbi.[end of work datetime]) = 12 
    AND dbi.[state] = 'e' 
    AND dbi.[reg. nr.] = daa.[reg. nr.] 

코드 509

그리고이 둘을 합하여 849 t3.

+7

[왜] [당신] [중고] [사각형] [각괄호] [모든 곳] [언제] 필요하다]? – Bohemian

+0

[when] [you] [save] [the] [tables] [path] [you] [can] [save] [script] [file] [open] [for] [editing] 없이] [오류] [테이블을 찾을 수 없습니다] – miskovelnias

+1

그래서 뭐? 가독성이 편리합니다. 문제가있는 경우 우선 올바른 데이터베이스로 변경하는 스크립트에 무언가를 추가하십시오. 불필요한 문자로 코드를 오염시키지 마십시오. 파열되지 않은 경우 코드를 수정하지 마십시오. 그리고 btw, 나는 열/테이블 이름에 공백을 넣는 사람을 간략히 무시합니다. – Bohemian

답변

1

어때?

select t1, t2, t1 + t2 t3 
from (
the query from your question 
) temp 
0

누락 된 입력 데이터로 인해 명확하지 않습니다. 하지만 다음과 같이 검색하고 있다고 가정합니다.

select sum(sale.pice) as t1 
    , sum(sales.price) as t2 
    , sum(sales.price) + sum(sale.price) as t3 
    from [work info] as info 
     left outer join [work sale] as sale on (info.state = 'e' and info.[reg. nr.] = sale.[reg. nr.]) 
     left outer join [work sales] as sales on (info.state = 'e' and info.[reg. nr.] = sales.[reg. nr.]) 
    where year(info.[end of work datetime]) = 2013 
     and month(info.[end of work datetime]) = 12 

이것은 테이블 간의 관계에 따라 달라집니다. 내 예에서는 [reg.]에 하나의 항목 만 있다고 가정합니다. nr.] 모든 테이블에. 그렇지 않으면 "창 함수"또는 UNIONS 또는 CTE (http://msdn.microsoft.com/en-us/library/ms175972.aspx)를 사용할 수 있습니다. 당신이 찾고있는 해답을 얻으려면 더 많은 컨텍스트를 제공해야 할 수도 있습니다.

내 주어진 쿼리는 쿼리보다 조금 더 깨끗합니다. 그게 문제가 아니거나 내 가정이 틀린 것이라면 Dan Bracuk의 대답이 도움이됩니다.

아마도 열 이름도 살펴 봐야합니다. 그들은 내 의견으로는 너무 복잡해. :)