求一个存储过程或sql语句

chang1216 2011-10-06 12:39:26
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[monthlj]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[monthlj]
GO

CREATE TABLE [dbo].[monthlj] (
[采集日期] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[甲线煤量累计] [real] NULL ,
[甲线石灰石累计] [real] NULL ,
[甲线耗电量累计] [real] NULL ,
[乙线煤量累计] [real] NULL ,
[乙线石灰石累计] [real] NULL ,
[乙线耗电量累计] [real] NULL ,
[负荷1累计] [real] NULL ,
[负荷2累计] [real] NULL ,
[负荷3累计] [real] NULL
) ON [PRIMARY]
GO

采集时间 数据如 20110927 20110928 20110929 20110930 20111001
我想在一个页面选择年份 然后把所有这一年的每个月的 各个列的sum 列出来
也就是说 选择2011年 以后,列表里显示的是 2011年一月到当前月的 所有列的 月累计
...全文
118 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2011-10-07
  • 打赏
  • 举报
回复
select 
sum(case when datepart(mm,采集日期)=1 then 甲线煤量累计 else 0 end) as '甲线煤量累计_01月',
sum(case when datepart(mm,采集日期)=2 then 甲线煤量累计 else 0 end) as '甲线煤量累计_02月',
...
from
monthlj
where
datepart(yy,采集日期) = 2011
中国风 2011-10-06
  • 打赏
  • 举报
回复
按以上方法一個個字段合計,看看是否為樓主的結果
中国风 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chang1216 的回复:]

采集日期 甲线煤量累计
20110928 21 23 25 31 33 35 41 43 45
20110929 675. 59.65287 57.43 1012.8 89.63 82.94 584.5 526.6 468.8
20110930 32.7 1254.83 9 60.24062 367.1203 101200 657
1000028 454.9 ……
[/Quote]
select 
left([采集日期],6) as 年月,
SUM([甲线煤量累计]) AS [甲线煤量累计],
............

from dbo].[monthlj]
group by left([采集日期],6)
chang1216 2011-10-06
  • 打赏
  • 举报
回复
采集日期 甲线煤量累计
20110928 21 23 25 31 33 35 41 43 45
20110929 675. 59.65287 57.43 1012.8 89.63 82.94 584.5 526.6 468.8
20110930 32.7 1254.83 9 60.24062 367.1203 101200 657
1000028 454.9 1548 53.1 5654 943.9269 567 567
20111001 345.7 1 2 3 4 5 6 7 8 9
数据基本就是这样的 想算出来
2011年 9月的 所有列的合计 作为一行显示
10月的 所有列的合计 作为一行显示
中国风 2011-10-06
  • 打赏
  • 举报
回复
簡單舉個以年份查看的例子

CREATE PROCEDURE p_monthlj_Year(
@dt int
)
SELECT MONTH([采集日期]) AS 月份,
SUM([甲线煤量累计]) AS [甲线煤量累计],
............

FROM dbo].[monthlj]
WHERE YEAR([采集日期])=@dt
GROUP BY MONTH([采集日期])

go
--調用
EXEC p_monthlj_Year 2011
叶子 2011-10-06
  • 打赏
  • 举报
回复
请给出测试数据,及想要的结果,对你想要数据的行和列无法准确理解。
中国风 2011-10-06
  • 打赏
  • 举报
回复
可以把年份做為條件

也可以把年份作為一列,讓程序判斷
Lyongt 2011-10-06
  • 打赏
  • 举报
回复

Select Convert(Varchar(7),采集日期,120) As 月份,
Sum(isNull(甲线煤量累计,0)) As 甲线煤量累计,
Sum(isNull(甲线石灰石累计,0)) As 甲线石灰石累计,
Sum(isNull(甲线耗电量累计,0)) As 甲线耗电量累计,
Sum(isNull(乙线煤量累计,0)) As 乙线煤量累计,
Sum(isNull(乙线石灰石累计,0)) As 乙线石灰石累计,
Sum(isNull(乙线耗电量累计,0)) As 乙线耗电量累计,
Sum(isNull(负荷1累计,0)) As 负荷1累计,
Sum(isNull(负荷2累计,0)) As 负荷2累计,
Sum(isNull(负荷3累计,0)) As 负荷3累计
From monthlj
Where Convert(Varchar(4),采集日期,120) = '2011'
Group By Convert(Varchar(7),采集日期,120)
dawugui 2011-10-06
  • 打赏
  • 举报
回复
select 
sum(case datepart(mm,采集日期) when 1 then 甲线煤量累计 else 0 end) [甲线煤量累计_01月],
sum(case datepart(mm,采集日期) when 2 then 甲线煤量累计 else 0 end) [甲线煤量累计_02月],
...
sum(case datepart(mm,采集日期) when 12 then 甲线煤量累计 else 0 end) [甲线煤量累计_12月],
如果还需要合计其他字段则如上写法即可。
from monthlj
where datepart(yy,采集日期) = 2011
叶子 2011-10-06
  • 打赏
  • 举报
回复
select 
left([采集日期],6) as 年月,
SUM(isnull([甲线煤量累计],0)) AS [甲线煤量累计],
SUM(isnull([甲线石灰石累计],0)) AS [甲线煤量累计],
...
SUM(isnull([负荷2累计],0)) AS [负荷2累计],
SUM(isnull([负荷3累计],0)) AS [负荷3累计]
from dbo].[monthlj]
group by left([采集日期],6)
order by left([采集日期],6)

34,593

社区成员

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

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