再次向大家求助!怎么在一个SQL语句中实现“日累”、“月累”!

mybaby521 2004-09-18 09:29:52
不知道能不能同时在一个SQL语句中,对特定某表,同时查询出“日累”、“月累”、“年累”?哪位曾经实现过吗?
...全文
351 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
mybaby521 2004-09-18
  • 打赏
  • 举报
回复
不好意思,分数太少,不太够分!以后,我会把分数增加,来感谢大家的帮助!
mybaby521 2004-09-18
  • 打赏
  • 举报
回复
我就是想要这种的啊!真不知道怎么感谢大家!马上结帖!
谢谢谢谢!!!
zjcxc 元老 2004-09-18
  • 打赏
  • 举报
回复
--示例

--示例数据
create table tb(riqi datetime,shul int)
insert tb select '2004-08-06',7
union all select '2004-08-07',4
union all select '2004-09-07',4
union all select '2004-09-08',2
union all select '2003-07-09',10
union all select '2003-09-08',6
go

--统计
select 日期=case
when grouping(年)=1 then '总计'
when grouping(月)=1 then 年+'年合计'
when grouping(日)=1 then 年+'年'+月+'月小计'
else 日 end
,数量=sum(shul)
from(
select 年=datename(year,riqi)
,月=datename(month,riqi)
,日=convert(char(10),riqi,120),shul
from tb
)a group by 年,月,日 with rollup
go

--删除测试
drop table tb

/*--测试结果

日期 数量
------------------------------ -----------
2003-07-09 10
2003年07月小计 10
2003-09-08 6
2003年09月小计 6
2003年合计 16
2004-08-06 7
2004-08-07 4
2004年08月小计 11
2004-09-07 4
2004-09-08 2
2004年09月小计 6
2004年合计 17
总计 33

(所影响的行数为 13 行)
--*/
mybaby521 2004-09-18
  • 打赏
  • 举报
回复
看来CSDN上真的是高手如云啊!
非常感谢各位的指教!
我会按大家的方法进入测试!

也希望大家以后更多的帮助我!
yjdn 2004-09-18
  • 打赏
  • 举报
回复
补充上面的:
如果同时统计:
select convert (char(7),日期,120) as 年月份 ,cast (sum(日销售量) as varchar(10)) 各月累计 from tn group by convert (char(7),日期,120)
union all
select '年份','各年累计'
union all
select cast(year(日期)as varchar(10)) ,cast(sum(日销售量) as varchar(10)) from tn group by cast(year(日期) as varchar(10))
union all
select '日统计','日累计'
union all
select '日统计',cast(sum(日销售量) as varchar(10)) from tn
cxingh 2004-09-18
  • 打赏
  • 举报
回复
create table #t (日期 datetime,日销售量 int)
insert into #t
select '2004-08-06',7
union select '2004-08-07',4
union select '2004-09-07',4
union select '2004-09-08',2
union select '2003-07-09',10
union select '2003-09-08',6
union select '2004-08-09',4
union select '2004-09-09',4
union select '2004-09-09',2
union select '2003-07-04',10
union select '2003-09-02',6

select 日期, convert (char(7),日期,120) as 年月份, sum(日销售量) 各月累计 from #t
group by convert (char(7),日期,120),日期 with rollup

drop table #t
yesterday2000 2004-09-18
  • 打赏
  • 举报
回复
我上面写错了


----日
select convert (varchar (4),riqi,120)+'年'+substring(convert (varchar (10),riqi,120),6,2)+'月'+
substring(convert (varchar (10),riqi,120),9,2)+'日' as riqi,sum(shul) as shul
from tn
group by convert (varchar (4),riqi,120)+'年'+substring(convert (varchar (10),riqi,120),6,2)+'月'+
substring(convert (varchar (10),riqi,120),9,2)+'日'
-----月
union all
select convert (varchar (4),riqi,120)+'年'+substring(convert (varchar (10),riqi,120),6,2)+'月' as riqi,sum(shul) as shul
from tn
group by convert (varchar (4),riqi,120)+'年'+substring(convert (varchar (10),riqi,120),6,2)+'月'
-----年
union all
select convert (varchar (4),riqi,120)+'年'as riqi,sum(shul) as shul
from tn
group by convert (varchar (4),riqi,120)+'年'
order by riqi
yesterday2000 2004-09-18
  • 打赏
  • 举报
回复
create table tn (riqi datetime, shul int)

insert into tn select '2004-08-06',7
union select '2004-08-07',4
union select '2004-09-07',4
union select '2004-09-08',2
union select '2003-07-09',10
union select '2003-09-08',6



----日
select convert (varchar (4),riqi,120)+'年'+substring(convert (varchar (10),riqi,120),6,2)+'月'+
substring(convert (varchar (10),riqi,120),8,2)+'日' as riqi,sum(shul) as shul
from tn
group by convert (varchar (4),riqi,120)+'年'+substring(convert (varchar (10),riqi,120),6,2)+'月'+
substring(convert (varchar (10),riqi,120),8,2)+'日'
-----月
union all
select convert (varchar (4),riqi,120)+'年'+substring(convert (varchar (10),riqi,120),6,2)+'月' as riqi,sum(shul) as shul
from tn
group by convert (varchar (4),riqi,120)+'年'+substring(convert (varchar (10),riqi,120),6,2)+'月'
-----年
union all
select convert (varchar (4),riqi,120)+'年'as riqi,sum(shul) as shul
from tn
group by convert (varchar (4),riqi,120)+'年'
order by riqi
yjdn 2004-09-18
  • 打赏
  • 举报
回复
还有,你说要同时查询,你要求的格式是什么样的?

起码也给出一个表的样式出来吧?
yjdn 2004-09-18
  • 打赏
  • 举报
回复
不知道你的表是怎么样的,下面自己做了一个例子:
create table tn (日期 datetime,日销售量 int)
insert into tn select '2004-08-06',7
union select '2004-08-07',4
union select '2004-09-07',4
union select '2004-09-08',2
union select '2003-07-09',10
union select '2003-09-08',6
--月份来分
select convert (char(7),日期,120) as 年月份 ,sum(日销售量) 各月累计 from tn group by convert (char(7),日期,120)

--年份来分
--select year(日期) as 年份, sum(日销售量) 各年累计 from tn group by year(日期)

--日累计不知道你的是不是计算全部的?
mybaby521 2004-09-18
  • 打赏
  • 举报
回复
哪位帮忙解决一下啊!急啊!
谢谢!
mybaby521 2004-09-18
  • 打赏
  • 举报
回复
是做报表!
我有个销售表,是个比较独立的,其中有个“数量”字段,代表每笔销售业务发生时的数量。我想通过一个select 语句,同时查询出销售数量的日累计和月累计,不知道能不能实现!
zjcxc 元老 2004-09-18
  • 打赏
  • 举报
回复
表结构呢?
guo8216 2004-09-18
  • 打赏
  • 举报
回复
不是很明白,是不是做报表?

34,593

社区成员

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

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