2016-09-24 17 views
0

我有一個包含datetime,errorCode和整數值(具有此錯誤代碼的產品的計數...)的表。mySQL - 選擇包括零的DISTINCT值的總和

我需要選擇和按星期(時間)分組的所有不同的errorCodes與包括零的整數的總和。所以在每個星期都必須是所有不同的錯誤代碼。

表可以是這樣的:

2016-09-12, 0, 100 
2016-09-12, 0, 10 
2016-09-12, e1, 10 
2016-09-21, e2, 5 

,並導致我想要什麼:

week, errorCode, sum 
37, 0, 110 
37, e1, 10 
37, e2, 0 
38, 0, 0 
38, e1, 0 
38, e2, 5 

感謝。

+2

你會需要一個日曆因爲您的結果集似乎包含未出現在源表中的數據。 –

+0

您還需要一張表,其中包含所有錯誤代碼 – Jayvee

+0

我可以通過SELECT DISTINCT table.errorCodes獲取所有錯誤代碼 – fbituco

回答

0

在基本水平上,這將顯示所有星期的錯誤總和,包括總和爲0的錯誤總和,其中至少有一個錯誤類型。這一個的另一個缺點是,週數是與年份相關的序數,即0-51。如果你需要這個跨年工作和/或包括所有星期,然後,因爲它指出,你可能需要從日曆開車離開加入到這個查詢:

SELECT week(week), e.errorCode, sum(case when e.errorCode=x.errorCode then c else 0 end) from 
errorCodes e, xtest x 
group by week(week), e.errorCode 
+0

好吧,這就是我想要的。好吧,我知道幾個星期的問題,但現在不是問題。但是如果我運行你的函數,它會顯示星期和錯誤代碼,但是在所有錯誤代碼中的總和是相同的(它是週中所有錯誤代碼的總和)。 – fbituco

+0

太好了。如果它適合你,請接受答案。 – Jayvee

+0

我已將羣組更改爲星期(星期),應按星期/錯誤代碼合計 – Jayvee