【问题标题】:How can I sum the same column differently depending on another column type如何根据另一种列类型对同一列进行不同的求和
【发布时间】:2020-01-11 17:42:30
【问题描述】:

我想在 Alteryx 中创建一个 SQL 查询。此查询通过发票表并根据与其关联的位置汇总不同的费用。因此,每个位置的每一列都可以有不同的类型。下面是一个例子:

Location    FreightCharge   InvoiceCharge
A           FRT             IVC
B           FRT, CHG        IVC, DTL

当我只需要担心一个位置时,使用带有 case 语句的查询效果很好。现在我可能有数百个。我创建了一个包含类型的 Locations 表(上表)。但我不相信这是正确的做法。

最终,我要么想要一个可以从头开始执行此操作的 SQL 语句 (alteryx),要么(更有可能)一个我可以用来循环访问链接到我的参考表并自动统计这些数据的位置的工作流。

有什么想法吗?

但是,如果我可以为每个位置运行此程序,并将其附加到发票表中,那就太好了。

我尝试创建一个参考表并将其加入我的主要发票查询,但我无法让它按正确的数据进行过滤。我考虑过创建一个循环遍历每条记录的 Alteryx 或 SSIS 包,但是我不需要一次循环遍历一条记录。一次只有一个位置。

这将进入位置 A 的类似表格中:

    Select Location, InvoiceNumber, Case WHEN InvoiceType IN('FRT') THEN InvoiceAmount Else 0 End as FreightCharge  --**I want this to be dynamic depending on location, Case WHEN InvoiceType IN('IVC','DTL') then InvoiceAmount Else 0 End as InvoiceCharge --**I want this to be dynamic depending on location From Invoicing Where InvoiceDate = Today

我想要一张发票表,其中所有位置及其总和值(它们应如何根据参考表求和)都在一个表中。

【问题讨论】:

    标签: tsql dynamic alteryx


    【解决方案1】:

    假设您将查找表组织为:

    Location GroupLabel  InvoiceType
    A        Freight     FRT
    A        Invoice     IVC
    B        Freight     FRT
    B        Freight     CHG
    B        Invoice     IVC
    B        Invoice     DTL
    

    听起来您的数据类似于...

    Location  InvoiceNumber  InvoiceAmount  InvoiceType
    A         1              1.00           FRT
    A         1              2.00           IVC
    A         2              3.00           FRT
    A         2              4.00           IVC
    B         3              5.00           FRT
    B         3              6.00           IVC
    B         4              7.00           CHG
    B         4              8.00           DTL
    

    那么,我认为以下内容将提供您所追求的......

    Select
        i.Location
      , i.InvoiceNumber
      , l.GroupLabel
      , Sum(i.Amount)
    From
        Invoicing i
        Inner Join LookupTable l
           on l.Location = i.Location
          and l.InvoiceType = i.InvoiceType
    Group By
        i.Location
      , i.InvoiceNumber
      , l.GroupLabel
    

    在 Alteryx 中,在执行按显示的三个字段分组并汇总 InvoiceAmount 的聚合之前,在 Location 和 InvoiceType 上执行 Join 应该非常简单。

    【讨论】:

      猜你喜欢
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2021-01-05
      • 2019-03-08
      • 2010-09-23
      • 2015-10-29
      相关资源
      最近更新 更多