我有一个要在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
我想要一张发票表,其中所有位置及其总和值(根据参考表应如何求和)全部集中在一张表中。
答案 0 :(得分:0)
假设您将查询表组织为:
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进行联接应该非常简单。