Tsql 如何根据其他列类型对同一列进行不同的求和

Tsql 如何根据其他列类型对同一列进行不同的求和,tsql,dynamic,alteryx,Tsql,Dynamic,Alteryx,我想在Alteryx中创建一个SQL查询。此查询将遍历一个开票表,并根据与之关联的位置汇总不同的费用。因此,每个位置的每一列都可以有不同的类型。下面是一个示例: Location FreightCharge InvoiceCharge A FRT IVC B FRT, CHG IVC, DTL 当我只需要担心一个位置时,使用带有case语句的查询可以很好地工作。现在我可能会有数百个位置。我创建了一个包含类型

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

Location    FreightCharge   InvoiceCharge
A           FRT             IVC
B           FRT, CHG        IVC, DTL
当我只需要担心一个位置时,使用带有case语句的查询可以很好地工作。现在我可能会有数百个位置。我创建了一个包含类型的位置表(上表)。但我不相信这样做是正确的

最终,我想要一个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

我想要一个包含所有位置及其合计值(根据参考表的合计方式)的开票表。假设您将查找表组织为:

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进行联接应该非常简单