2011-07-29 213 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

是的,也可以在沒有子查詢的情況下完成。 –