[已解决] PQ中如何取得上条记录的值?

  [复制链接]
查看311020 | 回复202 | 2020-8-5 12:36:51 | 显示全部楼层 |阅读模式
上一条记录的 期末余额,就是本条记录的 期初余额。在PQ中怎么也没有实现整列的 本条期初余额 = 上条期末余额。用x = List.First(List.Range(上条偏移量............只能取得固定的一个数,不能实现整列都取到错位的期末余额列的数数。关键是偏移量没有实现取动态数。
想在就是想问:
1、本条怎么取上条记录的数?
2、本列怎么错位取得其他列的数?
这2中手段有各自的用途,希望各位高手不吝赐教,2种方法都教一教吧。
做了个简单的例子。 9796012005491.png
回复

使用道具 举报

树仔 | 2020-8-5 12:45:51 | 显示全部楼层
这是简单的文件例子
9796012005492.rar (15.12 KB, 下载次数: 0)
回复

使用道具 举报

tianhong | 2020-8-5 12:46:51 | 显示全部楼层
如果觉得计算逻辑有问题,那么先不增加期初余额,只要把期末余额计算对就行,怎么写?
(本条期末余额 = 增加值 + 上条期末余额)
再增加期初余额列,该列是错位的期末余额列
回复

使用道具 举报

srici_yb | 2020-8-5 12:52:52 | 显示全部楼层
已添加自定义 = Table.AddColumn(重排序的列, "期初余额", each [期末余额]+[增加值])

这条命令中:[期末余额] 要怎么写,让他的值是上条记录的 期末余额?
回复

使用道具 举报

mzz | 2020-8-5 12:59:52 | 显示全部楼层
已经实现了错位取列的数。
let
  源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
  更改的类型 = Table.TransformColumnTypes(源,{{"序号", type number}, {"借方发生额", type number}, {"贷方发生额", type number}, {"余额", type number}}),


  定义偏移值 = Table.AddColumn(更改的类型, "偏移值", each [序号]-2, type number),

  原来的余额列=Table.Column(定义偏移值,"余额"),       //取得“余额”列的各个值

  添加期初余额列 = Table.AddColumn(定义偏移值, "期初余额", each if [偏移值] >=0 then 原来的余额列{[偏移值]} else List.Sum(List.RemoveNulls({[借方发生额],-[贷方发生额],[余额]})), type number)

in
  添加期初余额列


请问:我的程序是不是太繁琐了,能不能简化?
回复

使用道具 举报

劲秋 | 2020-8-5 13:03:52 | 显示全部楼层
  1. let

  2.   Source = Excel.CurrentWorkbook(){[Name="表1"]}[Content],

  3.   Custom1 = Table.AddColumn(Source,"Beginning",each List.Sum(List.FirstN(Source[增加值],[序号]-1))),

  4.   Custom2 = Table.AddColumn(Custom1,"Ending",each if [Beginning]=null then [增加值] else [Beginning]+[增加值])

  5. in

  6.   Custom2
复制代码
回复

使用道具 举报

潜龙 | 2020-8-5 13:09:52 | 显示全部楼层
好的,谢谢!程序已收藏。
回复

使用道具 举报

lxmmxt | 2020-8-5 13:14:53 | 显示全部楼层
大神, 有系统的学习pq的课程或者资料吗?
回复

使用道具 举报

kato | 2020-8-5 13:16:53 | 显示全部楼层
大神, 有系统的学习pq的课程或者资料吗?


我都从微软官方网站看的资料
回复

使用道具 举报

VALENTINO974 | 2020-8-5 13:22:53 | 显示全部楼层
我一般这么干,在原始数据查询里增加一列 序数列 从0开始 在添加一个查询只查找期初余额同时添加一个序数列从1开始, 再合并2个查询 按序数列合并,行就错开了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则