求SQL语句(100分)

  • 主题发起人 主题发起人 snowhill
  • 开始时间 开始时间
S

snowhill

Unregistered / Unconfirmed
GUEST, unregistred user!
我有个数据库结构如下:
号码 月份 费用
138 2006年4月 20
138 2006年5月 50
138 2006年6月 30
139 2006年5月 40
139 2006年6月 20


如何用SQL建立如下表格:
号码 2006年4月 2006年5月话费 2006年6月话费
138 20 50 30
139 空 40 20
 
都不看帖的
哎~~~
大富翁都被累死的
 
交叉表,论坛里多的是,自己看
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3889927

看看这个吧,
 
行变列问题,在网络上搜一下就可以找到很多
楼上的解法很巧妙,佩服
 
SELECT 号码,sum(CASE MONTH(月份) WHEN 4 THEN 费用 ELSE 0 END) AS '4月',
sum(CASE MONTH(月份) WHEN 5 THEN 费用 ELSE 0 END) AS '5月', sum(CASE MONTH(月份) WHEN 6 THEN 费用 ELSE 0 END) AS '6月'
FROM 表
GROUP BY 号码
 
问问题前,先查旧贴!

百分之九十的问题,以前都有了答案的
 
都也不能怪lz啊,现在都没法查吧?


不过,lz问的这个问题也太tm经典了,入门必看,记得当时第一次看到那个写法,对作者感到无比崇拜。

现在麻木了,不是水平高了,而是需要崇拜的东西太多了。
 
用函数也可以
 
--建立一张表
create table b
(
号码 int,
月份 varchar(200),
费用 Numeric
);

--初始化表数据
insert into b values('138','2006年04月',20);
insert into b values('138','2006年05月',50);
insert into b values('138','2006年06月',30);
insert into b values('139','2006年05月',40);
insert into b values('139','2006年06月',20);

--转换并统计
select
号码,
substring(月份,1,5) as 年份,
sum(case when substring(月份,6,3) = '01月' then 费用 else 0 end ) as '01月',
sum(case when substring(月份,6,3) = '02月' then 费用 else 0 end ) as '02月',
sum(case when substring(月份,6,3) = '03月' then 费用 else 0 end ) as '03月',
sum(case when substring(月份,6,3) = '04月' then 费用 else 0 end ) as '04月',
sum(case when substring(月份,6,3) = '05月' then 费用 else 0 end ) as '05月',
sum(case when substring(月份,6,3) = '05月' then 费用 else 0 end ) as '05月',
sum(case when substring(月份,6,3) = '07月' then 费用 else 0 end ) as '07月',
sum(case when substring(月份,6,3) = '08月' then 费用 else 0 end ) as '08月',
sum(case when substring(月份,6,3) = '09月' then 费用 else 0 end ) as '09月',
sum(case when substring(月份,6,3) = '10月' then 费用 else 0 end ) as '10月',
sum(case when substring(月份,6,3) = '11月' then 费用 else 0 end ) as '11月',
sum(case when substring(月份,6,3) = '12月' then 费用 else 0 end ) as '12月'
from b
group by substring(月份,1,5),号码
order by substring(月份,1,5),号码
 
如果是动态的怎么处理?
这个月份最多只能有12列,如果不是用月份这样有固定列的如何处理。
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部