求一条sql2000里的汇总语句

aaronslee 2010-07-02 04:40:26
大家帮忙看个 sql
日期 金额 经手人
2010-01-02 100 a
2010-01-03 100 a
2010-02-02 100 a
2010-03-02 100 a
2010-03-02 100 b
我要实现分组,最后实现
日期 金额 经手人
1、2、3月 400 a
3月 100 b
咋写语句呢
注意:是 sqlserver 2000 
...全文
127 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
zhouyabo 2010-07-05
  • 打赏
  • 举报
回复
顶1楼的
feng_sky 2010-07-04
  • 打赏
  • 举报
回复
噢没有看清,要根据经手人 汇总 经过月分,金额,上面的不能汇总经过月份。
feng_sky 2010-07-04
  • 打赏
  • 举报
回复
不知简单不简单。反正可用
feng_sky 2010-07-04
  • 打赏
  • 举报
回复
select case when 日期 between '2010-01-01' and '2010-03-11' then '01,02,03'
when 日期 between '2010-04-01' and '2010-04-30' then '04' end,
经手人,sum(金额)
from ****
group by case when 日期 between '2010-01-01' and '2010-03-11' then '01,02,03'
when 日期 between '2010-04-01' and '2010-04-30' then '04' end,
经手人
ChinaITOldMan 2010-07-04
  • 打赏
  • 举报
回复
please use function
nightmaple 2010-07-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mustkillbush 的回复:]
有无好点的方法啊

实际运用中,这不是一个表,是几十个表的一个查询结构了 。。。。
[/Quote]

你用的版本低,如果高点版本话有函数可以处理,那样就简单多了
aaronslee 2010-07-02
  • 打赏
  • 举报
回复
有无好点的方法啊

实际运用中,这不是一个表,是几十个表的一个查询结构了 。。。。
guguda2008 2010-07-02
  • 打赏
  • 举报
回复
IF OBJECT_ID('TB') IS NOT NULL DROP TABLE TB
IF OBJECT_ID('FUN_MU') IS NOT NULL DROP FUNCTION FUN_MU
GO
CREATE TABLE TB(COL1 DATETIME,COL2 INT,COL3 VARCHAR(10))
INSERT INTO TB
SELECT '2010-01-02', 100 ,'a' UNION ALL
SELECT '2010-01-03', 100 ,'a' UNION ALL
SELECT '2010-02-02', 100 ,'a' UNION ALL
SELECT '2010-03-02', 100 ,'a' UNION ALL
SELECT '2010-03-02', 100 ,'b'
GO
CREATE FUNCTION FUN_MU(@COL3 VARCHAR(10))
RETURNS VARCHAR(8000)
AS
BEGIN
DECLARE @STR VARCHAR(8000)
SELECT @STR=ISNULL(@STR+',','')+CAST(MONTH(COL1) AS VARCHAR(2))+'月'
FROM TB
WHERE COL3=@COL3
GROUP BY MONTH(COL1)
RETURN @STR
END
GO
SELECT dbo.FUN_MU(COL3),SUM(COL2),COL3
FROM TB
GROUP BY COL3
/*
1月,2月,3月 400 a
3月 100 b
*/

pt1314917 2010-07-02
  • 打赏
  • 举报
回复
--> 测试数据: [tb]
if object_id('[tb]') is not null drop table [tb]
create table [tb] (日期 datetime,金额 int,经手人 varchar(1))
insert into [tb]
select '2010-01-02',100,'a' union all
select '2010-01-03',100,'a' union all
select '2010-02-02',100,'a' union all
select '2010-03-02',100,'a' union all
select '2010-03-02',100,'b'
go

--创建函数
create function get_str(@man varchar(20))
returns varchar(50)
as
begin
declare @sql varchar(50)
select @sql=isnull(@sql+'、','')+月份 from
(select distinct 月份=datename(mm,日期) from tb where 经手人=@man)a
return @sql
end
go

select 日期=dbo.get_str(经手人),金额=sum(金额),经手人 from [tb] group by 经手人


--结果:
日期 金额 经手人
-------------------------------------------------- ----------- ----
01、02、03 400 a
03 100 b
guguda2008 2010-07-02
  • 打赏
  • 举报
回复
2000用函数

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧