惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
博客园 - 【当耐特】
量子位
Engineering at Meta
Engineering at Meta
博客园_首页
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家
V
Visual Studio Blog
小众软件
小众软件
阮一峰的网络日志
阮一峰的网络日志
美团技术团队
Jina AI
Jina AI
The Cloudflare Blog
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
雷峰网
雷峰网
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
宝玉的分享
宝玉的分享
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
博客园 - 聂微东

博客园 - lrary

JavaScript经典技巧 - lrary - 博客园 动态添加ASP.NET控件并绑定处理事件一例 - lrary - 博客园 脚本收藏 - lrary - 博客园 一些sql语句的详细解释[转] 特殊的DataGrid的绑定 - lrary - 博客园 纯脚本搞掂DataGrid表表头不动,表身滚动。(转摘) - lrary - 博客园 检验密码强度的JS类 - lrary - 博客园 数据库设计规范 V2.0 DataGrid 多行 DataGrid怎么产生一个分类的题头 AJAX 在.net的应用 sql怎么使用外连接 Asp.NET程序中常用的三十三种代码 检测含有中文字符串的实际长度 根据区位得到汉字拼音首字母(c#) 认识ASP.NET配置文件Web.config Asp.net(C#)实现验证码功能 给Repeater、Datalist和Datagrid增加自动编号列 查找和统计页面上控件
SQL语句特---殊统计(1)
lrary · 2006-05-13 · via 博客园 - lrary

表Table1:  
  项目 金额  
  X1 100  
  X2 120  
  Y1   Y3 180  
  Y2 90  
  Z1 140  
  A1   A2   B1                   300  
  B2   Z2   C1                   150  
  要得到以下结果:  
  项目 金额  
  A 200  
  B 150  
  C 50  
  X 220  
  Y 270  
  Z 190  
  注:即头字母相同的累加,一个项目中如果有多于一个值则等分(如A1   A2   B1:300则A   200,B   100)。

解决方法:

create   table   Table1(项目   varchar(20),金额   int)   
  
insert   Table1   select   'X1'                         ,100   
  
union     all         select   'X2'                         ,120   
  
union     all         select   'Y1       Y3'               ,180   
  
union     all         select   'Y2'                         ,90   
  
union     all         select   'Z1'                         ,140   
  
union     all         select   'A1     A2       B1',300   
  
union     all         select   'B2       Z2   C1'         ,150   
  
go   
  
select * from table1
  
--查询处理   
    
  
--处理临时表   
  declare   @i   int   
  
select   @i=max(len(项目))   from   Table1   
  
set   rowcount   @i   
  
select   id=identity(int)   into   #t   from   syscolumns   a,syscolumns   b   
  
set   rowcount   0   
    
  
--统计出结果   
  select   项目,项目1=substring(a.项目,b.id,1),金额   
  
into   #t1   from   Table1   a,#t   b   
  
where   len(a.项目)>=b.id   and   patindex('   [^   ]%',substring('   '+a.项目,b.id,8000))=1   
    
  
select   项目=a.项目1,金额=sum(a.金额/b.cnt)     
  
from   #t1   a,(select   项目,cnt=count(*)   from   #t1   group   by   项目)b   
  
where   a.项目=b.项目   
  
group   by   a.项目1   
    
  
drop   table   #t,#t1   
  
go   
    
  
--删除测试   
  drop   table   Table1