2013-06-03 4 views
5

일종의 요약 데이터를 만들기 위해 여기를 시도합니다. 나는 그것이 가장 우아한 sql 코드가 될지 확신하지 못한다!그룹별로 요약 데이터

나는 다음과 같은 테이블을 가지고

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 

내가 웹 및 상점 판매의 총은 "직접"판매를 표현하기 위해 뭔가를 얻을 수있어 방문을 무시하고 그래서 데이터를 조회하고 싶습니다 및 추천.

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

아무도 내가 이것을 할 수 있음을 알고 있습니까? 그룹별로 (그룹별로 선택하십시오) 생각하고 있었지만 노력하고있는 모든 것은 필사적 인 실패입니다! 롤.

미리 감사드립니다.

dsw

EDIT!

방문 방문을 '보조'로 추천하고 싶다면 어떻게해야합니까? 쉽게 익 혔어? 그래서 찾고 ...

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 

다시 한번 감사드립니다!

DS

+2

? 'RDBMS'는 * Relational Database Management System *을 의미합니다. 'RDBMS는 SQL의 기초입니다 .' 그리고 MS SQL Server, IBM DB2, Oracle, MySQL 등과 같은 모든 현대 데이터베이스 시스템에 대해 ... –

+0

이것은 MSSQL 서버입니다 - 감사합니다 – dstewart101

+0

안녕하세요 - 아마도 누군가 제 편집을 보길 바랍니다. ? 질문을 여러 개의 '그룹'으로 업데이트했습니다. 누군가 도움이된다면 위대한 사람이 될 수 있습니다. – dstewart101

답변

6

당신은 channel으로 레코드를 필터링 특히 각 그룹 product에 대한 열 SoldSUM()를 사용하여 집계 할 필요가있다.

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 
,

OUTPUT [RDBMS (http://en.wikipedia.org/wiki/Relational_database_management_system) 당신이 사용하는 어떤

╔══════════╦═══════════╦═══════════╗ 
║ 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

이것이 내가 원하는 것입니다. 정말 고마워. 또한 SQLFiddle 사이트를 처음 보았습니다. 그것은 꽤 좋다! 고마워요 – dstewart101

+0

분명히, 구문은 나를 위해 옳지 않아,하지만 지금 내가 뭘하는지 알아 :) – dstewart101

+1

내 업데이트 된 답변을 참조하십시오. –