2011-07-29 136 views
2

我在我的数据库记录如下在一条记录下显示多条记录?

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 

现在我想将其显示为以下

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 

其中sum_0是SUM值时currency_flag=0SUM_1是SUM值时currency_flag=1

我该怎么做?

回答

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

不,我不想。我和想在一列SUM值,如果currency_flag是0和另一列中的另一列的总和值,如果currency_flag = 1 – guru

+0

它将会像你总结一个元素一样,如果我是正确的 –

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

条件是一些用户有两个记录,固定标志为1,货币标志为0,我是用于显示 – guru

+0

的一个记录,其中货币标志的总和为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

是的,也可以在没有子查询的情况下完成。 –