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