-
1. 主表明细表互变
- 1.1 自动生成历史版本明细
- 2. 需求调研
-
3. excel
-
3.1. 图表易忘点
- 3.1.1 excel2007组合图和次坐标
- 3.1.2 柱状图翻转
- 3.1.3 累加阶梯图实现过程
- 3.2 公式里引用换行符号
- 3.3 公式可改控制excel公式和内容优先显示
- 3.4 打印尺寸
- 3.5 自检原理
- 3.6 快速移动变量
-
3.1. 图表易忘点
-
4. SQL
- 4.1 32位电量值只记了低16位,统计进位次数还原实际值_用窗口函数
- 4.2 SQL表达式隐含的类型转换
- 4.3 跟踪找表
- 4.4 主表列表规范形如带出明细
- 4.5 正则表达式
- 4.6 SQLServer复制表
- 4.7 写脚本往主表里新增数据,RecordID处理
- 4.8 查询优化
- 4.9 数据库同步:发布订阅
- 4.10 字符串拆分字母和数字
- 4.11 表新增数据
- 4.12 存储过程定义和调用
- 4.13 排序
-
5. 备份和恢复
- 5.1 设计数据*.nxds备份和恢复
-
6. 进阶应用
- 6.1 对接钉钉
- 6.2 解析json
- 6.3 交叉表存数
- 6.4 待办-记录类场景实现过程
- 6.5 已发不能再发控制
- 7 web改权限
- 8 无焦扫码
- 9 生成标签犯过的错误
- 10 mqtt快速登录
- 11 配置
- 12. 部署
- 13. 小技巧
- 14. 应用作业
- 15 坑
32位电量值只记了低16位,统计进位次数还原实际值_用窗口函数
- 2023-02-13 12:02:45
- 微图
- 833
- 最后编辑:微图 于 2024-11-05 18:45:39
- 分享链接
还原效果
思路,通过统计开始到前1行 电量差 < 0 出现次数,次数*进制+电量
select * ,进位次数=isnull(--前所有行到上1行进位归0的次数 sum(iif(isnull(电量差, 0)<0,1,0)) over(partition by 设备名 order by ID rows between unbounded preceding and 1 preceding) ,0) ,累计电量=isnull( sum(iif(isnull(电量差, 0)<0,1,0)) over(partition by 设备名 order by ID rows between unbounded preceding and 1 preceding) ,0) * 104857.6 + 电量 --65536*1.6=104857.6,进位次数*进制 from 段采表m易错点:用电量差做窗口条件,不含当前行(
rows between unbounded preceding and 1 preceding
)。
扩展理解4个关键参数即可:
rows between 2 preceding and current row #取当前行和前面两行 rows between unbounded preceding and current row #包括本行和之前所有的行 rows between current row and unbounded fo1lowing #包禧本行和之后所有的行 rows between 3 preceding and current row #包括本行和前面三行 rows between 3 preceding and 1 fo1lowing#从前面三行和下面一行,总共五行 #当order by后面缺少窗口从句条件,窗口规范默认是 rows between unbounded preceding and currentrow. #当order by和窗口从句都缺失,窗口规范默认是 rows between unbounded preceding and unbounded fo1lowing
iif和over各自单独用OK,一起就报错?
改用sql创建就能一起用了
select * ,表电量差=iif(电量差<0 , 1.6 , 电量差) ,进位次数=isnull(--前所有行到上1行进位归0的次数 sum(iif(isnull(电量差, 0)<0,1,0)) over(partition by 设备名 order by ID rows between unbounded preceding and 1 preceding) ,0) ,表电量=isnull( sum(iif(isnull(电量差, 0)<0,1,0)) over(partition by 设备名 order by ID rows between unbounded preceding and 1 preceding) ,0) * 104857.6 + 电量 --65536*1.6=104857.6,进位次数*进制 from 段采表m
扩展:错行计数
缩小窗口范围
发表评论