日期:2014-05-17  浏览次数:20307 次

sql 语句,关于分组和求和的,困难问题啊!求高手!
有一主表A
id   name
1    a
2    b

明细表B
id   A_id type  amount price
11   1    x     10     10
12   1    x     10     10
13   1    y     10     10
14   2    y     10     10

求一视图v (sum_amount 只计算type=x, sum_money需计算全部,如下所示)
A_id  sum_amount sum_money 
1     20         300
2     0          100

十分感谢!

------解决方案--------------------

declare @a table(id INT,   A_id INT, type VARCHAR(20), amount INT, price INT)
insert @a select 11 ,  1    ,'x',     10 ,    10
union all select 12 ,  1    ,'x',     10 ,    10
union all select 13 ,  1    ,'y',     10 ,    10
union all select 14 ,  2    ,'y',     10 ,    10

SELECT A_id, SUM(CASE WHEN TYPE='x' THEN amount ELSE 0 END),SUM(amount*price)
FROM @a 
GROUP BY A_id

--result
/*A_id                                
----------- ----------- ----------- 
1           20          300
2           0           100

(所影响的行数为 2 行)

*/