我有這樣一個表:SQL查詢來變換值的組合成一個塔
user_id, gender, sent
1 M 100
1 F 120
2 M 20
2 F 30
欲像這樣的表從上面:
user_id, male_sent, female_sent, total_sent
1 100 120 220
2 20 30 50
我缺乏(Postgres的) SQL foo來弄清楚這一點。
我有這樣一個表:SQL查詢來變換值的組合成一個塔
user_id, gender, sent
1 M 100
1 F 120
2 M 20
2 F 30
欲像這樣的表從上面:
user_id, male_sent, female_sent, total_sent
1 100 120 220
2 20 30 50
我缺乏(Postgres的) SQL foo來弄清楚這一點。
可以使用聚合函數與CASE
表達式得到的結果:
select user_id,
sum(case when gender = 'M' then sent else 0 end) male_sent,
sum(case when gender = 'F' then sent else 0 end) female_sent,
sum(sent) total_sent
from yourtable
group by user_id
見您正在使用什麼數據庫SQL Fiddle with Demo
?
如果您正在使用SQL Server,你可以做這樣的事情:
SELECT user_id,sum(case when gender = 'M' then sent else 0 end) as male_sent,
sum(case when gender = 'F' then sent else 0 end) as female_sent,
sum(sent) as total_sent
FROM your_table_name
GROUP BY user_id
嗨,我使用PSQL,我用psql標記它。 – jason 2013-03-17 23:15:08
你有沒有看過'psql'的標籤描述?你可能在談論PostgreSQL。 – 2013-03-22 03:58:24
哎呀,你是對的。 psql!= postgresql – jason 2013-03-23 19:17:02