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

新手SQL查询语句的问题。纠结3天了。求大神。
需求如下。
有一个团组表groups.
一个团组下面会有不定数量的人 member
member下面有一个字段 type (A和B 2种状态)
memeber下面有一个字段费用 cost

一个团组 groups下有4个member 甲乙丙丁.
甲的状态是 A cost=2000
乙丙丁状态都是 B cost 分别是 1000,2000,3000

我需要这样一个统计

A状态下Cost | B状态下Cost
  2000 6000

就是一条记录下能分别显示出2种状态下的Cost
如果对问题有疑问的,我会再详细表达。
新手学SQL,求赐教。

------解决方案--------------------
SQL code
create table groups(member varchar(10),type varchar(10), cost int)
insert into groups select '甲','A',2000
union all select '乙','B',1000
union all select '丙','B',2000
union all select '丁','B',3000

SELECT A as A状态下Cost, B as B状态下Cost 
FROM (select type,cost from groups)a 
PIVOT (SUM(COST) FOR TYPE IN(A,B))p
/*
A状态下Cost    B状态下Cost
----------- -----------
2000        6000

(1 行受影响)

*/