2013-06-03 18 views
5

Próbuje zrobić coś tutaj, aby utworzyć rodzaj danych zbiorczych. Nie jestem pewien, czy będzie to najbardziej elegancki kod SQL!grupa według danych podsumowujących

Mam poniższej tabeli

Product    Channel   Sold 
-------------------  ---------------------- 
PC     Web    48 
Laptop    Web    2 
Speakers   Web    74 
DVDs    Web    33 
PC     Shop   1 
Laptop    Shop   1 
Speakers   Shop   1 
DVDs    Shop   5 
PC     Door-to-door 7 
Laptop    Door-to-door 16 
Speakers   Door-to-door 9 
DVDs    Door-to-door 21 
PC     Referals  7 
Laptop    Referals  16 
Speakers   Referals  9 
DVDs    Referals  21 

Chciałbym zapytać dane więc dostać coś do reprezentowania „bezpośrednie” sprzedaży, która jest w sumie internetowych i salon sprzedaży, a tym samym drzwi do drzwi, ignorując i odsyłacze.

Product    Channel   Sold 
-------------------  ---------------------- 
PC    Direct   49 
Laptop   Direct   3 
Speakers  Direct   75 
DVDs   Direct   38 

Czy ktoś wie, jak mogę to zrobić? Myślałem o Grupie (wybierz ... grupę), ale wszystko, co próbuję, to desperacka porażka! lol.

Z góry dziękuję.

DS

EDYCJA!

Co jeśli chciałbym zamieścić "od drzwi do drzwi" i odsyłacze razem jako "wtórne"? Czy łatwo to osiągnąć? Więc szukam ...

Product    Channel   Sold 
-------------------  ---------------------- 
PC    Direct   49 
Laptop   Direct   3 
Speakers  Direct   75 
DVDs   Direct   38 
PC    Secondary  14 
Laptop   Secondary  32 
Speakers  Secondary  18 
DVDs   Secondary  42 

Jeszcze raz dziękuję!

DS

+2

Co [RDBMS] (http://en.wikipedia.org/wiki/Relational_database_management_system) używasz? 'RDBMS' oznacza * Relacyjny system zarządzania bazą danych *. 'RDBMS jest podstawą dla SQL' i dla wszystkich nowoczesnych systemów baz danych, takich jak MS SQL Server, IBM DB2, Oracle, MySQL, itp. –

+0

to jest serwer MSSQL - dzięki – dstewart101

+0

cześć ponownie - czy ktoś może spojrzeć na moją edycję proszę ? zaktualizowałem pytanie, aby mieć wiele "grup". Jeśli ktoś mógłby pomóc, to byłoby wspaniale. – dstewart101

Odpowiedz

6

Trzeba tylko odfiltrować rekordy przez channel i agregować je za pomocą SUM() na kolumnie Sold dla każdej grupy konkretnie product.

SELECT Product,  
     'Direct' Channel, 
     SUM(Sold) TOtalSold 
FROM TableName 
WHERE Channel IN ('Web','Shop') 
GROUP BY Product 

UPDATE

SELECT Product,  
     CASE WHEN Channel IN ('Web','Shop') 
       THEN 'Direct' 
       ELSE 'Secondary' 
     END Channel, 
     SUM(Sold) TOtalSold 
FROM TableName 
GROUP BY Product, 
     CASE WHEN Channel IN ('Web','Shop') 
       THEN 'Direct' 
       ELSE 'Secondary' 
     END 
ORDER BY Channel 

WYJŚCIE

╔══════════╦═══════════╦═══════════╗ 
║ PRODUCT ║ CHANNEL ║ TOTALSOLD ║ 
╠══════════╬═══════════╬═══════════╣ 
║ Laptop ║ Direct ║   3 ║ 
║ Speakers ║ Direct ║  75 ║ 
║ DVDs  ║ Direct ║  38 ║ 
║ PC  ║ Direct ║  49 ║ 
║ Laptop ║ Secondary ║  32 ║ 
║ Speakers ║ Secondary ║  18 ║ 
║ DVDs  ║ Secondary ║  42 ║ 
║ PC  ║ Secondary ║  14 ║ 
╚══════════╩═══════════╩═══════════╝ 
+0

Tego właśnie szukam. Dzięki wielkie. Po raz pierwszy widziałem tę witrynę SQLFiddle. To całkiem dobrze! Dzięki – dstewart101

+0

Oczywiście, składnia nie jest dla mnie odpowiednia, ale wiem, co teraz robię :) – dstewart101

+1

tutaj, zobacz moją zaktualizowaną odpowiedź. –

Powiązane problemy