2014-10-29 61 views
0

也許這對某個人來說是一個簡單的答案,但是我搜索並搜索了並且失敗了。 這是我有:1個表,包含以下內容:MySQL - 從一個表格到2列的2個總和和2個WHERE語句

id, int 
year, int 
month, int 
day, int 
revenue, float 
sub_category, text 

我想要得到的是返回1和表3列,以存放爲每月sub_category

的收入總和1個SQL語句
------------------------------- 
| Month | revcomp1 | revcomp2 | 
------------------------------- 
| 01 | sumcat1 | sumcat2 | 
------------------------------- 
| 02 | sumcat1 | sumcat2 | 
------------------------------- 
| .. | .. | .. | 

這裏的SQL語句我跑:

SELECT 
month, 
cast(sum(rev *-1) as decimal(10,2)) as REVCOMP1, 
0 as REVCOMP2 
FROM 
tbl_data 
WHERE 
year='2014' and sub_category='comp1' 
GROUP BY month, sub_category DESC 

UNION 

SELECT 
month, 
0 as REVCOMP1 
cast(sum(rev *-1) as decimal(10,2)) as REVCOMP2, 
FROM 
tbl_data 
WHERE 
year='2014' and sub_category='comp2' 
GROUP BY month, sub_category DESC 

但是,這並沒有真正返回給定月份的總和在一行...

任何幫助非常感謝, 感謝

回答

0

爲此,您可以使用條件彙總:

select month, 
     cast(sum(case when sub_cateogry = 'comp1' then rev *-1 end) as decimal(10,2)) as REVCOMP1, 
     cast(sum(case when sub_category = 'comp2' then rev *-1 end) as decimal(10,2)) as REVCOMP2 
from tbl_data t 
where year = '2014' 
group by month; 
+0

好吧,但是這給了我兩個revcomp1和revcomp2非常相同的數額,而不是對過濾該公司的收入... – Borinho 2014-10-29 10:56:22

+0

@Borinho。 。 。它需要有條件的部分。哎呀。 – 2014-10-29 11:04:32

+0

我們贏了!非常感謝你 - 作品魅力! – Borinho 2014-10-29 12:08:57