2011-07-29 17 views
2

は、私は今、私はsum_0はSUM値がどこにあるcurrency_flag=0SUM_1はSUM値currency_flag=1があるとき1つのレコードの下に複数のレコードを表示しますか?

userid email first_name  SUM_0  SUM_1 
1  [email protected] User2 8609.00  12.00 
9  [email protected] User1  99.00 200.00  
34 [email protected] User3  345.00 200.00 
12 [email protected] User4  0.00 280.00 

以下のようにそれらを表示したい

userid email first_name SUM Currency_flag 
1  [email protected] User2 8609.00 0 
1  [email protected] User2  12.00 1 
9  [email protected] User1  99.00 0 
9  [email protected] User1  200.00 1 
34 [email protected] User3  345.00 0 
34 [email protected] User3  200.00 1 
12 [email protected] User4  0.00 0 
12 [email protected] User4  280.00 1 

次のように私のDB内のレコードを持っています。

どうすればいいですか?

答えて

0
select userid,email,first_name,sum(if(currency_flag=0,SUM,0)),sum(if(currency_flag=1,SUM,0)) 
from table 
group by 1 
+0

私はいけない何がcurrency_flagがある場合は合計が1列にSUM値をしたい.Iたいです0と他の列の別の列の合計値currency_flag = 1 – guru

+0

もし私が正しい場合、それはあなたが1つの要素を合計したものと同じになります –

1

これを試してみません:これを行うの

SELECT 
`userid`, `email`, `first_name`, 
SUM(IF(`currency_flag`=0, `SUM`, 0)) AS `SUM_0` 
SUM(IF(`currency_flag`=1, `SUM`, 0)) AS `SUM_1` 
FROM `users` 
GROUP BY (`userid`) 
+0

いいえ、それは動作していません – guru

+0

条件はいくつかのユーザーですcurencyフラグが1で通貨フラグが0のメッセージが2つあります。 – guru

+0

通貨フラグが1つの通貨フラグと1つのレコードと通貨フラグと1つのレコードの合計が0の別のコラムにあります。 – guru

1

一つの方法は、自己結合です:

SELECT A.UserID, A.Email, A.First_Name, A.SUM AS SUM_0, B.SUM AS SUM_1 
    FROM (SELECT *   FROM AnonymousTable WHERE Currency_Flag = 0) AS A 
    JOIN (SELECT UserID, SUM FROM AnonymousTable WHERE Currency_Flag = 1) AS B 
    ON A.UserID = B.UserID; 
+0

はい、これも副選択なしでも実行できます。 –