【发布时间】:2018-12-05 17:31:41
【问题描述】:
下面是交易项目表。
现在我想检索交易总额、折扣总额、折扣总额和销售税,我为此编写了以下查询:
select t1.av_transaction_id,
round(SUM((t1.gross_line_amount - t1.pos_discount_amount)), 2) AS total_amount_with_discount,
round(SUM((t1.gross_line_amount)), 2) AS total_amount,
round(SUM((t1.pos_discount_amount)), 2) AS total_discount,
round(SUM((t2.gross_line_amount)), 2) AS total_sales_tax
from transaction_detail as t1
inner join transaction_detail as t2 on t1.av_transaction_id=t2.av_transaction_id
and t1.transaction_date=t2.transaction_date
where (t1.sku_id is not null or t1.line_action_display_descr='sold')
and t2.line_object_description='S6 Sales Tax'
and t1.av_transaction_id='581280193'
group by t1.av_transaction_id
但我得到以下输出:
av_transaction_id:581280193 || total_amount_with_discount:5.01 || total_amount:6.67 || total_discount:1.66 || total_Sales_tax:0.66
正如您在屏幕截图中看到的,销售税应该是 0.22,但不知何故,查询返回 0.66。
有人可以帮我优化这个查询并告诉我为什么它返回一个不正确的值吗?
【问题讨论】:
-
好吧,我需要为多个事务运行此查询。为了简单起见,我只用一个交易 ID 发布了它
-
嗯,这次交易有 3 条记录,其中 sku_id 不为空或显示描述为“已售出”。所有这三个都将与连接的销售税记录相匹配...然后您获取 SUM()。所以 .22 + .22 + .22 = .66
-
你为什么要在这里加入?这是对相同数据的自联接。这里似乎有些不对劲。
-
@JoelCoehoorn 有道理,您知道如何检索销售税吗?我需要为多个事务运行此查询。
-
问得好问题,预期结果和问题描述清晰。投票赞成。
标签: sql sql-server