| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3210 人关注过本帖
标题:求 帐龄分析SQL语句
只看楼主 加入收藏
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
结帖率:33.33%
收藏
 问题点数:0 回复次数:25 
求 帐龄分析SQL语句
帐龄分析

表结构及记录如下

Tb

名称       时间            金额
张三      2007.1.1       100
张三      2007.10.30   200
张三      2006.5.12     400
马六      2007.11.5     150
王五      2005.10.1      900

要求实现下表:

名称    3个月以内     3个月-1年      1年以上      合计
张三       200              100                 400         700
马六       150                                                     150
王五                                                  900          900
搜索更多相关主题的帖子: 帐龄 SQL 语句 张三 马六 
2007-11-30 09:50
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
declare @t table(名称 varchar(10),时间 datetime,金额 int)
insert @t select '张三','2007-1-1',100
union all select '张三','2007-10-30',200
union all select '张三','2006-5-12',400
union all select '马六','2007-11-5',150
union all select '王五','2005-10-1',900

select 名称,
    [三个月以内]=sum(case when datediff(month,时间,getdate())<=3 then 金额 else 0 end),
    [三个月到一年]=sum(case when datediff(month,时间,getdate())>3 and datediff(month,时间,getdate()) <=12 then 金额 else 0 end),
    [一年以上]=sum(case when datediff(month,时间,getdate())>12 then 金额 else 0 end),
    [合计]=sum(金额)
from @t
group by 名称
order by 名称

/*
名称         三个月以内       三个月到一年      一年以上        合计         
---------- ----------- ----------- ----------- -----------
马六         150         0           0           150
王五         0           0           900         900
张三         200         100         400         700

(所影响的行数为 3 行)
/*

我的msn: myfend@
2007-11-30 10:05
XieLi
Rank: 1
等 级:新手上路
威 望:1
帖 子:762
专家分:0
注 册:2007-7-24
收藏
得分:0 
又比我快!

拥有蓝天的白云,拥有你的我.
2007-11-30 10:17
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
我要加速度..

我的msn: myfend@
2007-11-30 10:19
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
收藏
得分:0 
高手就是高手!感谢啊!

老大,再帮忙看看:
因为记录有正数有负数,而合计可能为0
我想让合并后的 合计为0的就不显示了。如何弄?

2007-11-30 10:45
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
收藏
得分:0 
[合计]=sum(金额) 可能为0,想让最后的结果中 [合计]=0的不显示

2007-11-30 10:46
XieLi
Rank: 1
等 级:新手上路
威 望:1
帖 子:762
专家分:0
注 册:2007-7-24
收藏
得分:0 
select 名称,
    [三个月以内]=sum(case when datediff(month,时间,getdate())<=3 then 金额 else 0 end),
    [三个月到一年]=sum(case when datediff(month,时间,getdate())>3 and datediff(month,时间,getdate()) <=12 then 金额 else 0 end),
    [一年以上]=sum(case when datediff(month,时间,getdate())>12 then 金额 else 0 end),
    [合计]=sum(金额)
from @t

group by 名称 having sum(金额)<>0
order by 名称

[[italic] 本帖最后由 XieLi 于 2007-11-30 10:53 编辑 [/italic]]

拥有蓝天的白云,拥有你的我.
2007-11-30 10:51
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
收藏
得分:0 
真的很感谢版主和XieLi

2007-11-30 10:54
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
刚转了一下..晚了..

我的msn: myfend@
2007-11-30 10:57
XieLi
Rank: 1
等 级:新手上路
威 望:1
帖 子:762
专家分:0
注 册:2007-7-24
收藏
得分:0 
下次留给你!

拥有蓝天的白云,拥有你的我.
2007-11-30 10:58
快速回复:求 帐龄分析SQL语句
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012991 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved