【问题标题】:Microsoft Cosmos Scope Script: how to process data row by row?Microsoft Cosmos Scope Script:如何逐行处理数据?
【发布时间】:2017-12-21 05:33:11
【问题描述】:

我想做的一个例子:

现有表:

1st Table name: DistinctAcctDay;
Column name: ID int, AccountingDate datetime;
Values: (1, 2017/05/01);
 (2, 2017/08/01);
 (3, 2017/09/01);


2nd Table name: TransferOut;
Column name: AccountingDate datetime; Amount decimal;
Values: (2017/01/01, 10);
(2017/02/01, 13);
(2017/06/25, 15);
(2017/08/03, 18);
(2017/08/08, 30);

我想让 Scope 脚本返回低于 3 个(或 n 个,取决于第一个表中存在多少行)的输出,输出当天之前所有历史数据的总和:

1) 第一表 2017/05/01 之前日期第二表的总和:数字应为 23;

2)第一表2017/08/01之前日期的第二表总和:数字应为10+13+15 =38;

3)第一表2017/09/01之前日期的第二表总和:数字应为10+13+15+18+30=86;

脚本应该用 Cosmos Scope 脚本编写。 ** 我曾经问过一个类似的问题,但没有以正确的方式描述它使用 USQL。它是 Scope 脚本而不是 USQL。因此,我再次发布正确的描述。*

// 我在想它可能需要使用 C# 在用户定义的函数/运算符中编写循环。

感谢您的帮助。

【问题讨论】:

    标签: c# scope cosmos


    【解决方案1】:
    @result = 
        SELECT d.Id, SUM(Amount) AS sumAmount
        FROM  @DistinctAcctDay AS d
        CROSS JOIN @TransferOut AS t
        WHERE d.AccountingDate >= t.AccountingDate 
        GROUP BY d.Id;
    

    【讨论】:

      猜你喜欢
      • 2018-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-10
      • 2018-02-25
      • 2017-07-28
      • 2018-01-18
      相关资源
      最近更新 更多