2016-09-24 6 views
0

datetime、errorCodeおよび整数値(このエラーコードを持つ製品の数)を持つテーブルがあります。mySQL - ゼロを含むDISTINCT値のSUMを選択

すべての別個のエラーコードを選択し、週単位でグループ化する必要があります(ゼロを含む整数の合計)。だから毎週必ずすべて別のエラーコードでなければなりません。

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

基本レベルでは、に少なくとも1つのエラータイプが存在するすべての週について、0を合計するものを含めて、エラーの合計が表示されます。この1つのもう1つの欠点は、その週が年を基準とした序数、つまり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

これは私が欲しいものです。そしてOK、私は数週間の問題について知っていますが、今は問題ではありません。しかし、私はあなたの関数を実行すると、それは週とエラーコードが表示されますが、大丈夫ですが、合計はすべてのエラーコードの週(これは週のすべてのエラーコードの合計です)で同じです。 – fbituco

+0

それがあなたのために働くなら、答えを受け入れてください。 – Jayvee

+0

グループを週(週)に変更しました。これは序数週/エラーコード – Jayvee

関連する問題