【问题标题】:Transact SQL - Table with different Record types requiring calculationTransact SQL - 需要计算的具有不同记录类型的表
【发布时间】:2018-05-15 02:45:24
【问题描述】:

我有一张发票和 Record_Types 表,我需要对其进行核对以打开发票报告。我已经完成了这个过程,并且知道我需要做什么。只是不知道如何正确构造查询,并且不想创建 3 个表。 记录类型。

  • 发票 = 1 信用 = 5 付款 = 7

Invoice_Number、Record_Type、美元数字

Outstanding_Balance = Invoice(1) -(Payment(7)-(Credit))

Invoice_number Record_type Gen_Numeric_3

基本上我需要记录类型 1 并从下面减去记录类型 7 的总数。

Invoice_Num Rec_Type Dollar_Amt    
00820437      1     536.7700000000  
00820437      7     469.6200000000  
00820437      7      67.1500000000  

任何建议都会很棒。信使

【问题讨论】:

  • 请阅读您所写的内容,不要假设您知道自己要做什么。关于“invoice_number Record_type Gen_Numeric_3”的行对其他人没有任何意义。它是否相关?并且根据您的公式,您实际上想要 *add 积分(给定“ - ( - 5>)”,它与 - + 相同) ) . 对吗?提供更全面的样本数据集和您期望的结果如何?

标签: sql sql-server tsql


【解决方案1】:

您可以使用聚合和案例语句来做到这一点:

SELECT invoice_num, 
   SUM(CASE WHEN rec_type = 1 THEN dollar_amt ELSE 0 END) - (SUM(CASE WHEN rec_type=7 THEN dollar_amt ELSE 0 END) - SUM(CASE WHEN rec_type=5 THEN dollar_amt ELSE 0 END)) as outstanding_balance
FROM yourtable
GROUP BY invoice_num

【讨论】:

  • 经过几处调整,我得到了解决。不能告诉你我多么感激你的时间。非常感谢你。真挚地。埃塞尔
  • @messer - 请将其标记为答案。如果添加了调整,您可以添加到 cmets
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多