2017-03-01 7 views
1

다음과 같이 그룹에 행을 요약에 추가 할 수 있습니까? 구체적으로는 아래 출력을 찾고 있습니다.Sqlite의 카테고리를 기반으로 요약 행 추가하기

홈페이지 표

Client|Billing 
-------------- 
a  | 34 
a  | 27 
b  | 29 
b  | 27 
c  | 28 
c  | 37 

출력이 모두 같아야합니다 여기

Client|Billing 
-------------- 
a  | 34 
a  | 27 
Total | 61 
b  | 29 
b  | 27 
Total | 56 
c  | 28 
c  | 37 
Total | 65 

마찬가지로 다음 2 개 합계 합계 클라이언트 A에 대한 청구의 합 최초의 총입니다입니다 클라이언트 b와 c의 에서 mydata을 노동 조합의 모든 선택 '총', 합 (청구) 에서 을 청구, 선택 캐스트 클라이언트 (VARCHAR (10)와 같은 클라이언트) : 나는 아래의 코드 요구 사항의 유사한 종류를 달성 할 수 있어요

클라이언트

에 의해 mydata을 그룹은 그러나 전체 행, 마지막에 오는 다음과 같은 :(

Client|Billing 
    a |34 
    a |27 
    b |29 
    b |27 
    c |28 
    c |37 
Total |61 
Total |56 
Total |65 
+1

하지만 일반적으로 난 것은 응용 프로그램 코드의 종류를 처리하는 것이 가장 좋습니다 생각 다음 OrderNr 열은 동일한 클라이언트의 다른 행 후 합계를 정렬하는 데 사용됩니다. – Strawberry

+0

@Strawberry SQLite에는 WITH ROLLUP이 없습니다. –

+0

올바른지, sqlite는 롤업을 사용할 자유를 제공하지 않기 때문에 이러한 종류의 요구 사항으로 인해 고심하고 있습니다. 어느 누구도 저에게 큰 도움이 될 수 있으므로 저를 도울 수는 없습니다. –

답변

2

확인이.

+0

다른 방법을 제시해 주셔서 감사합니다. concat 명령은 sqlite에서 작동하지 않지만 코드는 다음 작업을 수행 할 수 있습니다. select * from mydata 합집합 select (클라이언트 || '총계) 클라이언트, SUM (청구) 합계 from mydata 그룹 by 클라이언트 클라이언트 별 –

+0

@ayushvarshney 나는 u가 SQLLIte를 사용하는 것을 놓쳤다. 좋아요,하지만 논리가 당신이 만든 쿼리가 너무 정확합니다 동일합니다. 여전히 어떤 도움이라도 언제든지 물어보십시오. HND –

0

는 당신이 있도록 클라이언트 이름을 유지해야한다,이

select * from table_name 
    union 
    select Client || '_Total' Client ,SUM(Billing)sum from table_name 
    group by Client 
    order by Client 
-1
select * from mydata 
    union 
    select (Client ||'_Total') Client ,SUM(Billing)sum from mydata 
    group by Client 
    order by Client 
+2

이 코드 단편은 질문을 해결할 수 있지만 [설명 포함] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)은 게시물의 품질을 향상시키는 데 정말로 도움이됩니다. . 앞으로 독자의 질문에 답하고 있으며 코드 제안의 이유를 알지 못할 수도 있습니다. –

0

올바르게 "총"열을 주문하려면 시도 SQLite는

에 mr.bhosale의 대답 @ 변환하면 나중에 정렬 할 수 있습니다. 당신은 ROLLUP과 함께 사용할 수있는

SELECT DisplayName AS Client, 
     Billing 
FROM (SELECT Client AS DisplayName, 
      Client, 
      Billing, 
      1 AS OrderNr 
     FROM MyTable 

     UNION ALL 

     SELECT 'Total', 
      Client, 
      sum(Billing), 
      2 AS OrderNr 
     FROM MyTable 
     GROUP BY Client) 
ORDER BY Client, 
     OrderNr;