2013-08-22 2 views
-1

У меня есть таблица, которая состоит из 12 столбцов следующим образом:запросов с группировкой

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

Что мне нужно свернуть общее shares в одну строку для повторяющихся строк. Критерии заключаются в том, что addr1 до addr4 идентичны, что определяет, что строка является дубликатом.

Я пробовал это, но он не работал.

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. Вам придется сделать некоторые изменения в них, чтобы получить их в наборе результатов, как правило, либо с MIN или MAX, такие как:

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 логики как пересекаться или КРОМЕ

You может объединить столбцы 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 
Смежные вопросы