Sql 如果你在每次付款中减去折扣,那么它就会成倍增加。因此,如果您有两个1月份的条目,而不是一次应用两次折扣。正确的计算方法是什么?真奇怪!查询是否提取了正确的数据?例如,在6月份,如果不删除折扣,当我添加-o.mon\u order\u折扣时,我的总折扣为16
Sql 如果你在每次付款中减去折扣,那么它就会成倍增加。因此,如果您有两个1月份的条目,而不是一次应用两次折扣。正确的计算方法是什么?真奇怪!查询是否提取了正确的数据?例如,在6月份,如果不删除折扣,当我添加-o.mon\u order\u折扣时,我的总折扣为16,sql,sql-server-2008,tsql,pivot,pivot-table,Sql,Sql Server 2008,Tsql,Pivot,Pivot Table,如果你在每次付款中减去折扣,那么它就会成倍增加。因此,如果您有两个1月份的条目,而不是一次应用两次折扣。正确的计算方法是什么?真奇怪!查询是否提取了正确的数据?例如,在6月份,如果不删除折扣,当我添加-o.mon\u order\u折扣时,我的总折扣为166594.92,它告诉我6月份现在是39024.47,相差127570.45,这是非常高的,而不是在接近折扣金额的地方应用的???@jasonangerton你能用表结构和示例数据创建一个新的折扣吗?这将更容易获得正确的查询。Ok将立即上载到s
如果你在每次付款中减去折扣,那么它就会成倍增加。因此,如果您有两个1月份的条目,而不是一次应用两次折扣。正确的计算方法是什么?真奇怪!查询是否提取了正确的数据?例如,在6月份,如果不删除折扣,当我添加
-o.mon\u order\u折扣时,我的总折扣为166594.92,它告诉我6月份现在是39024.47,相差127570.45,这是非常高的,而不是在接近折扣金额的地方应用的???@jasonangerton你能用表结构和示例数据创建一个新的折扣吗?这将更容易获得正确的查询。Ok将立即上载到sql FIDLE。哎呀!已被召集参加会议,将在我返回时上传到fiddle-感谢您迄今为止的所有帮助!嗯!在sqlfiddle中,它会产生正确的结果吗?需要查看数据@jasonangerton折扣应该应用于每笔付款还是整个月?这可能是造成问题的原因,如果你减去每笔付款的折扣,那么它就会成倍增加。因此,如果您有两个1月份的条目,而不是一次应用两次折扣。正确的计算方法是什么?
Table Name ID FK Columns
---------------------------------------------------------------------
tbl_orders uid_orders mon_order_discount
tbl_payment uid_payment uid_pay_orderid mon_pay_amount
Data: Jan Feb March
Discounts: 10.00 20.00 10.00
Payments: 200.00 300.00 400.00
Data: Jan Feb March
Totals-Discount: 190.00 280.000 390.00
SELECT *
FROM
(SELECT
DATENAME(month, dte_pay_paydate) mth,
mon_pay_amount
FROM
tbl_payment
INNER JOIN
dbo.tbl_orders ON (uid_pay_orderid = uid_orders)
WHERE
bit_pay_paid = 1
AND txt_pay_descrip <> 'Credit'
AND uid_order_webid = 1
) x
PIVOT
(
SUM(mon_pay_amount)
FOR
mth IN ([January], [February], [March], [April], [May],
[June], [July], [August], September, [October],
[November], [December])
) p
SELECT *
FROM
(
SELECT
DATENAME(month, p.dte_pay_paydate) mth,
p.mon_pay_amount - o.mon_order_discount as Total
FROM tbl_payment p
INNER JOIN tbl_orders o
ON p.uid_pay_orderid = o.uid_orders
WHERE bit_pay_paid = 1
AND txt_pay_descrip <> 'Credit'
AND uid_order_webid = 1
) x
PIVOT
(
SUM(Total)
FOR
mth IN ([January], [February], [March], [April], [May],
[June], [July], [August], September, [October],
[November], [December])
) p
SELECT *
FROM
(
SELECT DATENAME(month, p.dte_pay_paydate) mth,
sum(p.mon_pay_amount) - TotalDiscByMonth Total
FROM tbl_payment p
INNER JOIN tbl_orders o1
on p.uid_pay_orderid = o1.uid_orders
INNER JOIN
(
select sum(mon_order_discount) TotalDiscByMonth, DATENAME(month, dte_order_stamp) mth
from tbl_orders
group by DATENAME(month, dte_order_stamp)
) o2
ON DATENAME(month, o1.dte_order_stamp) = o2.mth
WHERE bit_pay_paid = 1
AND txt_pay_descrip <> 'Credit'
group by DATENAME(month, p.dte_pay_paydate), TotalDiscByMonth
) x
PIVOT
(
SUM(Total)
FOR
mth IN ([January], [February], [March], [April], [May],
[June], [July], [August], September, [October],
[November], [December])
) p