2016-08-09 7 views
2

SQLで次のようにする方法がわかりません。私はGROUP BYとHAVINGをさまざまな方法で使ってみましたが、どれもうまくいきません。SQLでの項目の結合

私はこのようなテーブルを持っている:

ここ
Title Value 1 Value 2 ... 
0  3   7 
1  4   8 
2  5   9 
(empty) 6   10 
0  1   2 

(empty)が文字列ではありません。私はちょうどそのテーブルのセルがempty(null)であることを示すためにそれを置いています。私は1つの変更だけでこのテーブルを表示したい。タイトル0 or (empty)の行はすべて""と一致し、タイトルは0、値は1 = Sum(all Value 1s)、値は2 = Sum(all Value 2s)です。他はすべて同じままです。 だから、上記の例では、私が見てみたい:

Title Value 1 Value 2 ... 
0  10  19 
1  4   8 
2  5   9 

は誰でも助けてくださいことはできますか?

ありがとうございました!

+0

整数列をすることはできません空の – Strawberry

+0

@Strawberry:??? –

+0

@ThorstenKettner ???? – Strawberry

答えて

3

これはcaseと集約クエリです:

select (case when title is null or title = 0 then 0 else title end) as title, 
     sum(value1) as value1, sum(value2) as value2 
from t 
group by (case when title is null or title = 0 then 0 else title end) 
order by title; 

あなたが好きなら、あなたはまた、ロジックを使用することができます。

select coalesce(title, 0) as title, 
     sum(value1) as value1, sum(value2) as value2 
from t 
group by coalesce(title, 0) 
order by title; 
2

あなたがこの試すことができます:

SELECT 
IF(Title ='(empty)',0,Title) AS title_col, 
SUM(value1) as Value_1, 
SUM(value2) as Value_2 
FROM your_table 
GROUP BY title_col; 

注:

Titleの列に実際にこの文字列が格納されている場合は、(empty)このクエリを使用できます。

EDIT:

列のデータ型がINTであればそれはALLOW NULLとして宣言いた場合、それはNULL値を持つことができます。

の場合は、そう、クエリは以下のように修正される:

SELECT 
IF(Title IS NULL,0,Title) AS title_col, 
SUM(value1) as Value_1, 
SUM(value2) as Value_2 
FROM your_table 
GROUP BY title_col; 
+0

ありがとう、しかし、私が言ったように(空)は文字列ではありません。 。 –

+0

それでヌルですか、空の文字列ですか?ところでタイトル列のデータ型は何ですか? – 1000111

+0

ヌル。実際には列の型はintです。名前 "title"は誤解を招きますが、私はそれを選択しませんでした –

1

私は2つのクエリ、タイトルの記録用と非タイトルレコードの集約のための1を参照してください。 2つの結果を接着するUNION ALLを使用します。

select title, value1, value2 
from my table where coalesce(title, 0) <> 0 
union all 
select 0, sum(value1), sum(value2) 
from my table where coalesce(title, 0) = 0 
group by title 
order by title; 

(すべてtitle <> 0がテーブルにユニークだった場合、あなたの代わりにgroup by coalesce(title, 0)で1つのクエリを使用することができます。)

+0

あなたが投稿した前にすでに解決策を見つけましたが、これも非常に良いです。 –

関連する問題