100分在线等,求一条语句 group by with cube 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这种事不是SQL擅长的,解决方案1. 发到SQL版区等牛人解决2. 自己用程序解决 /******************************************//*回复:代码20080513001 总:00000000008 *//*主题:行转列,汇总查询 *//*作者:二等草 *//******************************************//************例子数据 begin****************/create table cat(fid int, name varchar(20),flevel int)create table cucard(CatID int,fnumber varchar(10),fmoney int)insert cat select 1, '计算机' ,1 insert cat select 2 , '计算机-1' ,2 insert cat select 3 , '计算机-1-1',3 insert cat select 4 ,'房屋' ,1 insert cat select 5 , '房屋-1' ,2 insert cat select 6 , '房屋-1-1' ,3 insert cat select 7, '房屋-1-2' ,3 insert cat select 8 , '房屋-2' ,2 insert cat select 9 , '房屋-2-1' ,3 insert cat select 10, '房屋-2-2' ,3 insert cucard select 1, '06' ,5000.00insert cucard select 2 , '0601' ,5000.00insert cucard select 3 , '060101' ,5000.00insert cucard select 4 ,'07' ,7500.00insert cucard select 5 , '0701' ,7500.00insert cucard select 6 , '070101' ,3500.00insert cucard select 7, '070102' ,4000.00insert cucard select 8 , '0702' ,7500.00insert cucard select 9 , '070201' ,3500.00insert cucard select 10, '070202' ,4000.00go/************例子数据 end******************//************代码 begin***************/ select a1,a2,a3,bm,m into # from (select name a1 from cat where flevel = 1) a, (select name a2 from cat where flevel = 2) b, (select name a3,fnumber bm,fmoney m from cat,cucard where flevel = 3 and fid = catid) c where a2 like a1+'%' and a3 like a2+'%' select 第一级= case when a+b+c=3 then '合计' else case when a+b+c = 0 then a1 else '' end end ,第二级= case when a=0 and b+c=2 then '小机' else case when a+b+c = 0 then a2 else '' end end ,第三级= case when a+b=0 and c=1 then '小计' else case when a+b+c = 0 then a3 else '' end end ,编码 = case when c=1 then '' else case when a+b+c = 0 then bm else '' end end ,钱 = m from (select a1,a2,a3,(select bm from # where a3 = a.a3) bm ,sum(m) m ,grouping(a1) a,grouping(a2) b,grouping(a3) c from # a group by a1,a2,a3 with rollup ) a drop table # go/************代码 end*****************//************结果 begin***************第一级 第二级 第三级 编码 钱 -------------------- -------------------- -------------------- ---------- ----------- 房屋 房屋-1 房屋-1-1 070101 3500房屋 房屋-1 房屋-1-2 070102 4000 小计 7500房屋 房屋-2 房屋-2-1 070201 3500房屋 房屋-2 房屋-2-2 070202 4000 小计 7500 小机 15000计算机 计算机-1 计算机-1-1 060101 5000 小计 5000 小机 5000合计 20000 ************结果 end*****************//************清除*************************/drop table cat,cucard 这个发到SQL版好一些,比较复杂 这个正则表达式如何写:去掉文本文件中以“//debug”开头的行 怎样在WINFORM程序中,引用当前机器的OUTLOOK程序,然后能读出OUTLOOK的联系人? 为什么我的C#连接时候要指明服务器名呢?不能用一个点来连接本地的SQL2005? 刚学socket ,想问几个问题!!! VS2005写配置文件问题 如何往listview里添加数据 简单的一段代码,看看 我刚刚下了MSDN2003,后缀为.img,请问用什么打开?怎么进行安装! 对Socket.Poll方法还是不太理解 .NET 按段落读取PDF文档 正规表达式如何匹配空字符 正则表达式如何匹配任意字符
1. 发到SQL版区等牛人解决
2. 自己用程序解决
/*回复:代码20080513001 总:00000000008 */
/*主题:行转列,汇总查询 */
/*作者:二等草 */
/******************************************//************例子数据 begin****************/
create table cat(fid int, name varchar(20),flevel int)
create table cucard(CatID int,fnumber varchar(10),fmoney int)
insert cat select 1, '计算机' ,1
insert cat select 2 , '计算机-1' ,2
insert cat select 3 , '计算机-1-1',3
insert cat select 4 ,'房屋' ,1
insert cat select 5 , '房屋-1' ,2
insert cat select 6 , '房屋-1-1' ,3
insert cat select 7, '房屋-1-2' ,3
insert cat select 8 , '房屋-2' ,2
insert cat select 9 , '房屋-2-1' ,3
insert cat select 10, '房屋-2-2' ,3
insert cucard select 1, '06' ,5000.00
insert cucard select 2 , '0601' ,5000.00
insert cucard select 3 , '060101' ,5000.00
insert cucard select 4 ,'07' ,7500.00
insert cucard select 5 , '0701' ,7500.00
insert cucard select 6 , '070101' ,3500.00
insert cucard select 7, '070102' ,4000.00
insert cucard select 8 , '0702' ,7500.00
insert cucard select 9 , '070201' ,3500.00
insert cucard select 10, '070202' ,4000.00
go
/************例子数据 end******************//************代码 begin***************/ select a1,a2,a3,bm,m into #
from
(select name a1 from cat where flevel = 1) a,
(select name a2 from cat where flevel = 2) b,
(select name a3,fnumber bm,fmoney m from cat,cucard where flevel = 3 and fid = catid) c
where a2 like a1+'%' and a3 like a2+'%' select
第一级= case when a+b+c=3 then '合计' else case when a+b+c = 0 then a1 else '' end end
,第二级= case when a=0 and b+c=2 then '小机' else case when a+b+c = 0 then a2 else '' end end
,第三级= case when a+b=0 and c=1 then '小计' else case when a+b+c = 0 then a3 else '' end end
,编码 = case when c=1 then '' else case when a+b+c = 0 then bm else '' end end
,钱 = m
from
(select a1,a2,a3,(select bm from # where a3 = a.a3) bm ,sum(m) m
,grouping(a1) a,grouping(a2) b,grouping(a3) c
from # a group by a1,a2,a3 with rollup
) a drop table #
go
/************代码 end*****************//************结果 begin***************
第一级 第二级 第三级 编码 钱
-------------------- -------------------- -------------------- ---------- -----------
房屋 房屋-1 房屋-1-1 070101 3500
房屋 房屋-1 房屋-1-2 070102 4000
小计 7500
房屋 房屋-2 房屋-2-1 070201 3500
房屋 房屋-2 房屋-2-2 070202 4000
小计 7500
小机 15000
计算机 计算机-1 计算机-1-1 060101 5000
小计 5000
小机 5000
合计 20000 ************结果 end*****************//************清除*************************/
drop table cat,cucard