关于电费计算的SQL语句

just59277 2011-11-09 04:49:47
现在已知每小时的电能耗,要根据电能耗计算电费,由于电是分时段计费的(峰谷平三个时段收费不一样)
另有一张电价信息表,里面有 峰谷平时段电价等信息
要算出对应的电费 sql语句怎么写

电能耗表结构
BuildingID time value

电价信息表
BuildingID time fengValue guValue pingValue

电价信息同一个建筑不同时段可能值不同


大致结构如此,求帮助
...全文
487 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
just59277 2011-11-10
  • 打赏
  • 举报
回复
自己解决了 跟10楼的差不多 具体代码我就不贴了 谢谢大家
Mr_Nice 2011-11-10
  • 打赏
  • 举报
回复
if object_id('[TB_1]') is not null drop table [TB_1]
go
create table [TB_1] (BuildingID int,time datetime,value int)
insert into [TB_1]
select 1,'2011/4/30 23:00',1 union all
select 1,'2011/5/1 00:00',1

if object_id('[TB_2]') is not null drop table [TB_2]
go
create table [TB_2] (BuildingID int,time datetime,fengValue int,guValue int,pingValue int)
insert into [TB_2]
select 1,'2011/1/1',1,2,3 union all
select 1,'2011/5/1',2,4,6

select * from [TB_1]
select * from [TB_2]


SELECT A.BuildingID ,
A.time AS 日期时间 ,
MAX(B.time) AS 收费时限 ,
( CASE WHEN CONVERT(TIME, A.[time]) BETWEEN '5:00' AND '9:00' --时间自己调整一下
THEN MAX(B.fengValue)
ELSE CASE WHEN CONVERT(TIME, A.[time]) BETWEEN '16:00' AND '23:59'
THEN MAX(B.guValue)
ELSE CASE WHEN CONVERT(TIME, A.[time]) BETWEEN '9:00' AND '16:00'
THEN MAX(B.pingValue)
ELSE CASE WHEN CONVERT(TIME, A.[time]) BETWEEN '0:00' AND '5:00'
THEN MAX(B.guValue)
END
END
END
END ) * A.value AS cost
FROM [TB_1] A
INNER JOIN [TB_2] B ON A.time >= B.time
GROUP BY A.BuildingID ,
A.time ,
A.value

/*
BuildingID 日期时间 收费时限 cost
----------- ----------------------- ----------------------- -----------
1 2011-04-30 23:00:00.000 2011-01-01 00:00:00.000 2
1 2011-05-01 00:00:00.000 2011-05-01 00:00:00.000 4

(2 行受影响)*/
just59277 2011-11-10
  • 打赏
  • 举报
回复
BuildingID time value
1 2011/4/30 23:00 1
1 2011/5/1 00:00 1


BuildingID time fengValue guValue pingValue
1 2011/1/1 1 2 3
1 2011/5/1 2 4 6


查询条件 BuildingID 时间段 2011/4/1-2011/6/1
结果
BuildingID time cost
1 2011/4/30 23:00 2
1 2011/5/1 00:00 4

这里只取了谷时段的数据例子 实际数据里面还要分其他的时段计算
q465897859 2011-11-09
  • 打赏
  • 举报
回复
无数据无真相
--小F-- 2011-11-09
  • 打赏
  • 举报
回复
请给出测试数据和所需要的结果。
just59277 2011-11-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fredrickhu 的回复:]

SQL code
select
a.BuildingID,
sum(case when time between 'xx' and 'xx' then fengValue
when time between 'xx' and 'xx' then guValue
when time between 'xx' and 'xx' then……
[/Quote]

这个我考虑过 问题是 有可能 这个时间段内 有多种价格 你这样算就不准了
--小F-- 2011-11-09
  • 打赏
  • 举报
回复
select
a.BuildingID,
sum(case when time between 'xx' and 'xx' then fengValue
when time between 'xx' and 'xx' then guValue
when time between 'xx' and 'xx' then pingValue

end)*a.value
from
电能耗表 a join 电价信息表 b
on
a.BuildingID=b.BuildingID
where
a.time between 'xx' and 'xx'
group by
a.BuildingID
--小F-- 2011-11-09
  • 打赏
  • 举报
回复
select
a.BuildingID,
sum(case when time between 'xx' and 'xx' then fengValue
when time between 'xx' and 'xx' then guValue
when time between 'xx' and 'xx' then pingValue

end)*a.value
from
电能耗表 a join 电价信息表 b
on
a.BuildingID=b.BuildingID
group by
a.BuildingID
just59277 2011-11-09
  • 打赏
  • 举报
回复
需要的结果是某一段时间内的电费 可以选择按月或者按天计算
--小F-- 2011-11-09
  • 打赏
  • 举报
回复
列转行吗?需要得到的结果是什么?
黄_瓜 2011-11-09
  • 打赏
  • 举报
回复
有的数据就好办多了
第1章 性能调整概述 1.1 性能概述 1.2 性能评估 1.3 建立性能目标 1.4 什么时候需要做性能调整 1.5 性能调整准则 1.6 性能调整的方法和过程 1.7 性能调整总结 第2章 存储I/O设计 2.1 存储基本概念 2.2 存储架构 2.3 存储相关性能调整案例 2.4 存储I/O设计总结 第3章 操作系统相关性能问题 3.1 HP-UX系统性能监控综述 3.2 AIX性能监控综述 3.3 操作系统性能优化 3.4 逻辑卷和lvmo优化 3.5 总结 第4章 数据库物理设计和逻辑设计 4.1 数据库物理设计 4.2 数据库逻辑设计 4.3 使用Autoconfig设计数据库 4.4 其他高级设计技术 4.5 数据库设计总结 第5章 DB2性能监控 5.1 快照监视器案例 5.2 事件监视器及监控案例 5.3 利用表函数监控 5.4 性能管理视图及案例 5.5 db2pd 5.6 db2mtrk及监控案例 5.7 本章小结 第6章 数据库配置参数调整 6.1 数据库配置参数 6.2 监控和调优实例(DBM)配置参数 6.3 监控和调优DB配置参数 6.4 调整DB2概要注册变量 6.5 内存自动调优 6.6 总结 第7章 锁和并发 7.1 锁等待及调整案例 7.2 锁升级及调整案例 7.3 死锁及调整案例 7.4 隔离级别与锁 7.5 最大化并发性 7.6 锁相关的性能问题总结 7.7 锁与应用程序开发 7.8 本章小结 第8章 索引设计与优化 8.1 索引概念 8.2 索引结构 8.3 理解索引访问机制 8.4 索引设计 8.5 索引创建原则与示例 8.6 影响索引性能的相关配置 8.7 索引维护 8.8 DB2 Design Advisor(db2advis) 8.9 索引调整总结 第9章 DB2优化器 9.1 DB2优化器介绍 9.2 SQL语句执行过程 9.3 优化器组件和工作原理 9.4 扫描方式 9.5 连接方法 9.6 优化级别 9.7 如何影响优化器来提高性能 9.8 优化器总结 第10章 统计信息更新与碎片整理 10.1 统计信息更新 10.2 碎片整理 10.3 重新绑定程序包 10.4 本章小结 第11章 SQL语句调优 11.1 通过监控找出最消耗资源的SQL语句 11.2 通过解释工具分析SQL语句执行计划 11.3 理解SQL语句如何工作 11.4 SQL调优案例 11.5 提高应用程序性能 第12章 DB2调优案例、问题总结和技巧 12.1 调优案例一:某移动公司存储设计不当和SQL引起的I/O瓶颈 12.2 调优案例二:某银行知识库系统锁等待、锁升级引起性能瓶颈 12.3 调优案例三:某汽车制造商ERP系统通过调整统计信息提高性能 12.4 调优案例四:某农信社批量代收电费批处理慢调优案例 12.5 调优学习案例:利用压力测试程序学习DB2调优 后记

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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