2014-01-28 6 views
0

6122 개의 행이 채워진 테이블이 있습니다. 나는 모든 복제본을 발견하고 그것들을 표시했다. 이것이 내가 얻은 것입니다 :SQL - 선택한 데이터의 합계를 계산하는 방법?

description grossSale vat  netSale 
produce 0055 268  50.11  217.89 
product 0055 268  50.11  217.89 
product 0009 339  63.39  275.61 
product 0065 829  155.29 673.98 

이제 grossSale, Vat 및 netSale의 합계를 테이블에 표시하고자합니다. sum (grossSale) grossSale을 사용하면 모든 6122 값의 합계를 얻을 수 있지만 표시되는 4 개만 필요합니다. 따라서 표는 다음과 같습니다.

description grossSale vat  netSale 
produce 0055 268  50.11  217.89 
product 0055 268  50.11  217.89 
product 0009 339  63.39  275.61 
product 0065 829  155.29 673.98 
       1704  318.9  1385.37 

아무도 아이디어가 있습니까? 많은 도움을 주셨습니다. 감사!

답변

1

를 사용하여 중복 이미 가상 테이블로가 조회 :

SELECT SUM (grossSale) grossSale, SUM(vat) vat, SUM(netSale) netSale FROM 
    (SQL to show duplicates) 
0

당신은 당신의 결과에서 선택합니다 SELECT 문을 작성해야합니다. 그냥 할 것입니다 다른 SELECT와 현재 select 문을 포장 SUMGROUP BY 당신의 Description

SELECT Description 
    ,SUM(grossSale) 
    ,SUM(Vat) 
    ,SUM(netSale) 
FROM (SELECT Description 
      ,grossSale 
      ,Vat 
      ,netSale 
     FROM MyTable 
     WHERE MyColumn = 'SomeValue') a 
GROUP BY Description 
0

당신은 group by with rollup이 작업을 수행 할 수 있습니다. 당신은 group by 첫째을해야합니까 :

select description, sum(grossSale), sum(vat), sum(netSale) 
from table t 
group by description, grossSale, vat, netSale with rollup; 

그것은 group by 같이 sum()에서 같은 열이 이상하게 보일 수 있습니다. 이는 행에 고유 한 식별자가없는 것 같기 때문입니다. rollup은 요약 할 열을 알고 있으므로 sum()이 필요합니다.

+0

전체 테이블의 합계를 표시합니다. 복제본의 합계 만 요청 된 것입니다. –

+0

@ DanielB. . . 질문의 결과는 원본 데이터와 요약을 모두 가지고 있습니다. –

관련 문제