数据如下:
CL1 CL2 CL3
A T1 2
C T2 2
A T2 3
B T1 5
C T1 4
A T1 3
C T1 5
A T1 3
要求按CL1,CL2分组统计相同CL1下不同CL2的结果,并且每当统计完后吧结果付在后面。
想得到的结果如下
CL1 CL2 CL3
A T1 2
A T1 3
A T1 3
总计: (A)T1 8
A T2 3
总计: (A)T2 3
B T1 5
总计: (B)T1 5
C T1 4
C T1 5
总计: (C)T1 9
C T2 2
总计: (C)T2 2请教各位高手算法怎样实现,要求用存储过程做。
CL1 CL2 CL3
A T1 2
C T2 2
A T2 3
B T1 5
C T1 4
A T1 3
C T1 5
A T1 3
要求按CL1,CL2分组统计相同CL1下不同CL2的结果,并且每当统计完后吧结果付在后面。
想得到的结果如下
CL1 CL2 CL3
A T1 2
A T1 3
A T1 3
总计: (A)T1 8
A T2 3
总计: (A)T2 3
B T1 5
总计: (B)T1 5
C T1 4
C T1 5
总计: (C)T1 9
C T2 2
总计: (C)T2 2请教各位高手算法怎样实现,要求用存储过程做。
解决方案 »
- 怎么在最后再加一和求和?
- 100分,速度求答案。
- DateDiff(yyyy,NB_Intime,2010-6-9 上午 09:34:21)=0
- row=row_number()over(partition by参数问题
- 关于序号的自动编号问题,想把序号字段设为递增型的自动编号,在建时如何处理?
- SQL Server 合并结果集
- 存储过程传表和修改追溯性问题
- 关于多列转行的问题。
- 表本身查询的效率
- 如何通过代码实现向Access库中ole对象的字段中追加图片?
- excel导入sqlserver的时候,我需要先处理Excel,其中有一个字段是大整数,导入后变成科学记数法形式
- 求SQL 语句!急急急.....
with rollup
Create table T(id int IDENTITY(1,1),CL1 varchar(10), CL2 varchar(10), CL3 int);
---存储过程
IF OBJECT_ID ( 'proc', 'P' ) IS NOT NULL
DROP PROCEDURE proc;
CREATE PROCEDURE proc
AS
begin
------变量定义
declare @cl1 varchar(10),@cl2 varchar(10),@cl3 varchar(10),@clFlag varchar(10);
-----游标定义
declare cur Cursor For
select 'detail' as 区分,table.CL1,table.CL2,table.cl3
from table
union
select 'sum'as 区分,CL1,CL2,sum(CL3)as SUM
from table
group by CL1,CL2
order by CL1,CL2
----打开游标
open cur;
----遍历游标
fetch next cur into @clFlag,@cl1,@cl2,@cl3;
while @@fetch_status=0
begin
if @clFlag<>'sum'
begin
insert into T(CL1, CL2,CL3)
select @cl1,@cl2,@cl3
end
else
begin
insert into T(CL1, CL2,CL3)
select '总计:','('+@cl1+')'+@cl2,@cl3
end
fetch next cur into @clFlag,@cl1,@cl2,@cl3;
end
------取出结果
select * from T
order by ID
---------关闭游标,释放游标
close cur;
deallocate cur;
end