【问题标题】:How to pull the two most recent occurrences of a cost如何提取最近发生的两次成本
【发布时间】:2021-07-23 02:25:40
【问题描述】:

我遇到了一些复杂的问题。我的数据集包含许多不同的投资组合,每个投资组合都有我试图跟踪的特定年度成本。当费用进来时,我希望能够将其与上次支付的费用进行比较。

有两个问题:

  1. 首先,每个投资组合都会在不同的月份产生成本,所以我不能只提取成本达到的最近两个日期。

  2. 其次,有时费用会略有延迟,因此可能不会在每年的同一个月发生。

例子:

在 SQL 或 DAX 中是否有办法提取每个投资组合最近两次出现的成本?

TIA

【问题讨论】:

  • 你能举一个投资组合的例子吗?例如,您希望看到 P5 的哪些日期?
  • 为什么最后一行是 2022 年 1 月?与其他值相比,这是数据不匹配。

标签: sql powerbi dax


【解决方案1】:

在 SQL 中,这是微不足道的,但也取决于你的真实表设计/结构。

如果您提供 CREATE TABLE 语句和示例 INSERT 语句来显示您的测试用例,将会很有帮助。

窗口函数是一种方法。粗略的想法如下:

WITH xrows AS (
    SELECT portfolio, date, cost
         , ROW_NUMBER() OVER (PARTITION BY portfolio ORDER BY timestamp DESC) AS n
      FROM tbl
     )
SELECT *
  FROM xrows
 WHERE n <= 2
 ORDER BY portfolio, n
;

Row_number 用于在每个投资组合中分别分配行号,从 1 到该投资组合中的行数,按指定的顺序。以上只是按时间戳获取每个投资组合的前两行。显然,在您提供表结构之前,这些名称都是猜测。

注意:很难知道您是要查找存储的最新成本还是存储的最新 2 成本。这取决于您的确切问题,这在上面并不清楚。

【讨论】:

    猜你喜欢
    • 2016-05-15
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 2017-04-07
    • 1970-01-01
    • 2016-06-29
    相关资源
    最近更新 更多