2013-06-03 34 views
5

Cố gắng làm điều gì đó ở đây để tạo một loại dữ liệu tóm tắt. Tôi không chắc chắn nó sẽ là thanh lịch nhất của mã sql!nhóm theo dữ liệu tóm tắt

Tôi có bảng sau

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 

Tôi muốn truy vấn dữ liệu vì vậy tôi có được một cái gì đó để đại diện cho bán hàng "trực tiếp" mà là một tổng của Web và các cửa hàng bán hàng và do đó bỏ qua door-to-door và giới thiệu.

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

Có ai biết tôi có thể làm điều này không? Tôi đã suy nghĩ về nhóm theo (chọn .... nhóm bởi) nhưng tất cả mọi thứ tôi đang cố gắng là một thất bại tuyệt vọng! lol.

Xin cảm ơn trước.

DS

EDIT!

Điều gì xảy ra nếu tôi muốn đặt door-to-door và referals với nhau như 'secondary'? Điều đó có dễ dàng đạt được không? Vì vậy, tôi đang tìm kiếm ...

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 

Cảm ơn bạn một lần nữa!

DS

+2

[RDBMS] (http://en.wikipedia.org/wiki/Relational_database_management_system) bạn đang sử dụng? 'RDBMS' là viết tắt của * Hệ thống quản lý cơ sở dữ liệu quan hệ *. 'RDBMS là cơ sở cho SQL', và cho tất cả các hệ thống cơ sở dữ liệu hiện đại như MS SQL Server, IBM DB2, Oracle, MySQL, ... –

+0

đây là MSSQL Server - cảm ơn – dstewart101

+0

hi một lần nữa - có thể ai đó có thể xem xét chỉnh sửa của tôi ? Tôi đã cập nhật câu hỏi để có nhiều 'nhóm'. Nếu ai đó có thể giúp điều đó thật tuyệt. – dstewart101

Trả lời

6

Bạn chỉ cần để lọc ra các hồ sơ bằng channel và tổng hợp chúng bằng cách sử SUM() trên cột Sold cho từng nhóm cụ thể là product.

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

CẬP NHẬT

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

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

Đây là những gì tôi đang tìm kiếm. Cám ơn rất nhiều. Ngoài ra, đó là lần đầu tiên tôi nhìn thấy trang web SQLFiddle đó. Đó là khá tốt! Cảm ơn – dstewart101

+0

Rõ ràng, cú pháp không hoàn toàn phù hợp với tôi, nhưng tôi biết tôi đang làm gì bây giờ :) – dstewart101

+1

tại đây, hãy xem câu trả lời cập nhật của tôi. –

Các vấn đề liên quan