2012-10-03 19 views
8

Başlığı zordu ama soru oldukça basit. Her yeri aradım ve belirli sorunum için bir şey bulamadım, işte burada. BuSütun değerleri eşleştiğinde SQL toplam alanı

| TOTAL | ProductName | 
    | 700 | Bike  | 
    | 600 | Car   | 
gibi - Bunu

| Value | Product Name| 
    | 300 | Bike  | 
    | 400 | Bike  | 
    | 300 | Car   | 
    | 300 | Car   | 

Bana Ürün Adı maçları Değerler toplamını göstermek için tablo gerekir gibi Microsoft SQL Server Management Studio 2010.

Tablo Şu bakar usuing ediyorum

basit

SELECT 
     SUM(Value) AS 'Total' 
     ,ProductName 
FROM TableX 

denedim Ama yukarıda çalışmaz. Sütundaki tüm değerlerin toplamını almayı bitiriyorum. Ürün adı eşleşmesine göre nasıl özetleyebilirim?

Teşekkürler! SELECT açıklamada bir sütun ile bir toplama fonksiyonu

cevap

11
SELECT SUM(Value) AS 'Total', [Product Name] 
FROM TableX 
GROUP BY [Product Name] 

SQL Fiddle Example

+0

Basit bir şey olması gerektiğini biliyordum! Bu iyi çalıştı. Teşekkürler =) –

2

Herzaman, (SUM, MIN, MAX ...), sen GROUP BY kullanmalıdır. Bu, toplayıcıyı gruplandırmak için hangi sütunun olduğunu gösteren bir grup işlevidir. Ayrıca, toplu olarak olmayan tüm sütunlar, SELECT ifadenizde olamaz. Eğer olmayan belirterek sütunlar (col2) çünkü

Örneğin

aşağıdaki sözdizimi geçersiz senin GROUP BY (MySQL buna olanak tanır bile):

SELECT col1, col2, SUM(col3) 
FROM table 
GROUP BY col1 

Sorunuzun çözüm olacaktır:

SELECT ProductName, SUM(Value) AS 'Total' 
FROM TableX 
GROUP BY ProductName 
+0

* Bir toplama işlevini (SUM, MIN, MAX ...) kullandığınız her zaman, GROUP BY. * Kullanmanız gerekir. - Bu yanlıştır, tüm kümede ya da kısıtlanmış bir kısımda toplamak isteyebilirsiniz bir "WHERE" cümlesi. Bkz. [SQL Fiddle Örnek] (http://sqlfiddle.com/#!3/a3366/3/0) – RedFilter

+0

@RedFilter Açık bir şekilde belirtilmelidir. Bu, "SELECT" listesinde toplanmamış sütunlar kullanıldığında geçerlidir. Cevabımı bunu yansıtacak şekilde güncelledim. – Kermit