2012-07-26 2 views
1
이 표 2

테이블에서 카운트를 얻고 각 열

ID2  | Count2 
-----------+----------- 
1345653   5 
534140349  5 
682527813  4 
687612723  3 
704318001  5 

데이터 이하

의 합을 보여 위가 표시되는 경우이 표

ID1  | Count1 
-----------+----------- 
1345653   4 
704318001  4 
  1. 내 아래의 데이터입니다 표 2에서이 13456535 count이지만 표 1에서는 4 count입니다. 표 2에서이 ID 7043180015 count이지만 표 1에서는 4 count.
  2. 그리고 내가 보여줄 필요가있는 또 하나의 일은 그것이 가능한지 아닌지 모른다. 나는 마지막에 Count2 열의 합계와 마지막에 Count1 열의 합계와 같이 결국 각 열의 합계도 표시하려고합니다.

그래서 출력에 다음과 같이 표시해야합니다. 첫 번째 부분에 대한 작업 쿼리가 있지만 두 번째 부분에서 작업하는 방법을 잘 모르겠습니다.

ID    Count2 Count1 
----------------------------------- 
1345653   5  4 
534140349  5  0 
682527813  4  0 
687612723  3  0 
704318001  5  4 
       22  8 

sql에서 가능합니까? 그렇다면 어떻게 할 수 있습니까?

카운트 것이 작동하는 (첫 번째 부분을 의미 함) SQL fiddle을 만들었습니다. 그리고 SQL 쿼리에 각 열 기능의 합계를 추가하는 방법을 모르겠습니다. 표준 SQL에서

+0

어떤 데이터베이스 유형을 사용하고 있습니까? –

답변

1

이 당신을 위해 작동 할 것인가?

select id2, SUM(count2),SUM(coalesce(count1, 0)) as count1 
from table2 
left outer join table1 
    on id1=id2 
group by id2 
with rollup 

그것은 MySQL의 구문하지만 대부분의 RDMS 당신은 "롤업"그룹화를 찾고

+0

감사합니다 a1ex07, 나는 의심의 여지가있다. 만약 내가'id2 order by 1d2 by rollup'과 같이 글을 쓰고 있다면 작동 할까? 아니면 거기에 어떤 문제가 있습니까? – AKIWEB

+0

@ Nevzz03 : 당신은 아마 이미 그 시간까지 자신을 알아 냈을 것입니다. 'rollup'은'group by '옵션이고, 당신은 절을 분리 할 수 ​​없습니다.'order by'는'group by' 다음에 가야합니다 : group by ... by rollup order by ...'. 또한, 내가 기억하는 한, resulset은 'group by'의 표현으로 정렬되므로 동일한 필드를 '주문'할 필요가 없습니다. – a1ex07

0

:

Select id, Count2,Count1, Count2+Count1 as CountSum 
from table2 
left outer join table1 on table1.id=table2.id 
0

구문의 작은 차이 ROLLUP을 지원합니다. 나는 다음 쿼리가 당신이 원하는 것을 제공해야한다고 생각한다. SQL 서버를 사용하고 있다고 가정하면 ...

SELECT 
    ISNULL(Table1.ID1, Table2.ID2) AS ID, 
    SUM(ISNULL(Table2.Count2, 0)) AS Count2, 
    SUM(ISNULL(Table1.Count1, 0)) AS Count1 
FROM Table1 
FULL JOIN Table2 ON Table2.ID2 = Table1.ID1 
GROUP BY 
    ISNULL(Table1.ID1, Table2.ID2) WITH ROLLUP 
+0

작동 여부를 확인할 수 있도록 SQL Fiddle 예제를 제공 할 수 있습니까? 그렇게하면 유스 케이스에서 테스트 할 수 있습니다. – AKIWEB

+0

요청 된 정확한 결과를 반환하는 수정 된 쿼리 (확인을 위해 문제의 링크로 복사하여 붙여 넣기). 이 쿼리와 a1ex07 쿼리의 차이점은 하나 또는 두 테이블이 ID에서 일치하는지 여부는 중요하지 않습니다. 기본 드라이버 테이블을 찾고 있다면 대답이 더 정확할 수 있습니다. – jtimperley

관련 문제