2013-08-22 48 views
-1

我有一個包含12列如下表:查詢與分組

acct, addr1, addr2, addr3, addr4, addr5, 
addr6, addr7, add8, zip, domicile, shares 

我需要的是捲起總shares成一排的重複行。標準是addr1addr4是相同的,它確定該行是重複的。

我試過這個,但它沒有工作。

SELECT acct, addr1, addr2, addr3, addr4, addr5, 
addr6, addr7, add8, 
     zip, DOMICILE, sum(shares) as total_shares 
FROM table_name 
GROUP BY addr1, addr2, addr3, addr4 ORDER BY addr1; 
+4

顯示樣品數據和所需結果。沒有人希望對您的查詢「無效」進行逆向工程,並試圖找出您的意思。 –

+0

使用sqlfiddle.com。 – Tarik

+0

如果兩個獨立的人住在同一個郵政地址,該怎麼辦? –

回答

0

您正在選擇不在您的GROUP BY子句中的列。你必須做一些修改他們,讓他們到結果集,通常有兩種MINMAX,如:

SELECT MIN(acct) as acct, na1, na2, na3, na4, MIN(na5) as na5, MIN(na6) as na6, MIN(na7) as na7, MIN(na8) as na8, MIN(zip) as zip, MIN(DOMICILE) as DOMICILE, sum(shares) as total_shares 
FROM table_name 
GROUP BY na1, na2, na3, na4 
ORDER BY na1 
0

嘗試做一些表gropuping邏輯像交叉或EXCEPT

你如你希望能結合diferent列...

在這個例子中,我會抓住所有的情況下(ADDR1 = ADDR2 ADDR3 = = ADDR4)

SELECT acct, addr1 FROM table_name 
INTERSECT 
SELECT acct, addr2 FROM table_name 
INTERSECT 
SELECT acct, addr3 FROM table_name 
INTERSECT 
SELECT acct, addr4 FROM table_name 
0
select sum(total_shares) 
from 
(
    SELECT na1, na2, na3, na4, sum(shares) as total_shares 
    FROM table_name 
    GROUP BY na1, na2, na3, na4 
    having count(*) > 1 
) ttl