grubu

2013-06-03 29 views
5

Bir tür özet veri oluşturmak için burada bir şeyler yapmaya çalışın. Sql kodunun en zarif olacağından emin değilim!grubu

Aşağıdaki tablo var

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 

Ben Web ve Mağaza Satış toplam "doğrudan" satışları temsil etmek şeyler almak ve böylece kapıyı kapıya görmezden yüzden verilerini sorgulamak istiyorum ve referaller.

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

Bunu nasıl yapabileceğimi bilen var mı? Grup hakkında bir şeyler düşünüyordum (.... grubunu seç) ama denediğim her şey çaresiz bir başarısızlık! lol.

Şimdiden teşekkürler.

DS

EDIT!

Kapıdan kapıya ve referalleri 'ikincil' olarak bir araya getirmek istesem ne olur? Bu kolayca acıtılmış mı? Bu yüzden arıyorum ...

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 

Tekrar teşekkürler!

DS

+2

? "RDBMS" * İlişkisel Veritabanı Yönetim Sistemi * anlamına gelir. 'RDBMS SQL'in temelidir ve MS SQL Server, IBM DB2, Oracle, MySQL, vb. Gibi tüm modern veritabanı sistemleri için ... –

+0

bu MSSQL Sunucusu - teşekkürler – dstewart101

+0

tekrar merhaba - belki benim düzenime bakın lütfen ? Soruyu birden fazla 'grup' sahibi olacak şekilde güncelledim. Eğer birisi yardım ederse, bu harika olurdu. – dstewart101

cevap

6

sadece channel tarafından kayıtları filtrelemek ve özellikle her bir grup product için sütunda Sold üzerinde SUM() kullanarak bunları bir araya getirmek gerekir.

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

GÜNCELLEME

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 
.210

ÇIKIŞ [RDBMS] (http://en.wikipedia.org/wiki/Relational_database_management_system) kullandığınız Ne

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

Bu benim aradığım şey. Çok teşekkürler. Ayrıca, bu ilk SQLFiddle siteyi gördüm. Bu oldukça iyi! Teşekkürler – dstewart101

+0

Açıkçası, sözdizimi benim için tam olarak doğru değil, ama şimdi ne yapıyorum biliyorum :) – dstewart101

+1

, güncellenmiş cevabımı bakın. –