2012-07-26 21 views
1

這是下面的數據表2中獲取從表的計數,並顯示每一列

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

的總和這是我在表1

ID1  | Count1 
-----------+----------- 
1345653   4 
704318001  4 
  1. 以下數據。如果你看到上面表2中的這個1345653具有5 count,但是在表1中它具有4 count,表2中的這個ID 704318001具有5 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查詢中的每列功能的總和。

+0

你正在使用哪種類型的數據庫? – 2012-07-26 03:24:30

回答

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的語法,但大多數關係數據庫管理系統支持ROLLUP有少許差別在語法

+0

感謝a1ex07,我有一個疑問,如果我正在寫這樣的'按id2順序由1d2累積',那麼它會工作?或者有什麼問題嗎? – AKIWEB 2012-07-26 03:41:26

+0

@ Nevzz03:那時你可能已經明白了。 'rollup'是一個'group by'選項,你不能拆分子句,'order by'應該在'group by':'group ...之後去,並且彙總順序是...'。另外,據我所知,resulset是按「group by」表達式排序的,所以不需要在同一個字段中排序。 – a1ex07 2012-07-26 11:47:40

0

標準SQL:

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

您正在尋找一組「與彙總」。我相信下面的查詢應該提供你想要的。假設你正在使用SQL Server ...

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小提琴的例子,以便我可以看到它是否在工作嗎?這樣我可以測試我的用例。 – AKIWEB 2012-07-26 03:28:15

+0

更正了查詢以返回請求的確切結果(複製並粘貼到問題提供的鏈接中進行驗證)。這個查詢與a1ex07的查詢之間的區別在於,如果只有一個或兩個表匹配該ID,則無關緊要。如果您在尋找主駕駛表,他們的答案可能會更正確。 – jtimperley 2012-07-26 03:34:45

相關問題