Sql 计算折扣
我有这样一个客户折扣表: 我有一个名为@Total的递减变量来存储总金额Sql 计算折扣,sql,Sql,我有这样一个客户折扣表: 我有一个名为@Total的递减变量来存储总金额 declare @Total numeric (12,2) set @Total = (select Sum(LaborAmt) from #Data group by Co) 我需要写一个查询,根据@Total得到正确的折扣率。这意味着如果我的总金额是3500000,它应该返回2 SELECT dbo.budCustomerDisc.Customer, dbo.budCustD
declare @Total numeric (12,2)
set @Total = (select Sum(LaborAmt) from #Data
group by Co)
我需要写一个查询,根据@Total得到正确的折扣率。这意味着如果我的总金额是3500000,它应该返回2
SELECT dbo.budCustomerDisc.Customer, dbo.budCustDiscRate.DiscountRate
FROM dbo.budCustDiscRate INNER JOIN
dbo.budCustomerDisc ON dbo.budCustDiscRate.DiscountID = dbo.budCustomerDisc.DiscountId AND dbo.budCustDiscRate.JBCo = dbo.budCustomerDisc.JBCo
WHERE (dbo.budCustomerDisc.Customer = 165) .........
对不起,我只是不知道要写它选择budCustomerDisc.Customer,budCustDiscRate.Discentrate
SELECT budCustomerDisc.Customer, budCustDiscRate.DiscountRate
FROM budCustDiscRate
INNER JOIN dbo.budCustomerDisc ON dbo.budCustDiscRate.DiscountID = dbo.budCustomerDisc.DiscountId AND dbo.budCustDiscRate.JBCo = dbo.budCustomerDisc.JBCo
WHERE budCustomerDisc.Customer = 165
And BegBillAmt <= @Total
And EndBillAmt >= @Total
从布达拉
在dbo.budcusterDiscrate.DiscountID=dbo.budcusterDisc.DiscountID和dbo.budcusterDiscrate.JBCo=dbo.budcusterDisc.JBCo上内部联接dbo.budcusterDisc
其中budCustomerDisc.Customer=165
和BegBillAmt=@Total
这里的关键是,当@Total介于BegBillAmt和EndBillAmt之间时,您希望它返回一个值。您希望它返回正确的折扣。为此,我们需要一个BETWEEN语句或两个语句,一个用于检查BegBillAmt,另一个用于检查EndBill Amt。我将说明这两个方面:
第一次使用在:
SELECT dbo.budCustomerDisc.Customer, dbo.budCustDiscRate.DiscountRate
FROM dbo.budCustDiscRate INNER JOIN
dbo.budCustomerDisc ON dbo.budCustDiscRate.DiscountID = dbo.budCustomerDisc.DiscountId AND dbo.budCustDiscRate.JBCo = dbo.budCustomerDisc.JBCo
WHERE (dbo.budCustomerDisc.Customer = 165) AND @TOTAL BETWEEN BegBillAmt AND EndBillAmt
有时两者之间不清楚(见鬼,我不确定它是否在SQL Server之外受支持,或者在类似的情况下,它们是数据库字段而不是静态变量)。这是两张支票:
SELECT dbo.budCustomerDisc.Customer, dbo.budCustDiscRate.DiscountRate
FROM dbo.budCustDiscRate INNER JOIN
dbo.budCustomerDisc ON dbo.budCustDiscRate.DiscountID = dbo.budCustomerDisc.DiscountId AND dbo.budCustDiscRate.JBCo = dbo.budCustomerDisc.JBCo
WHERE (dbo.budCustomerDisc.Customer = 165) AND BegBillAmt >= @Total AND EndBillAmt <= @Total
选择dbo.budCustomerDisc.Customer、dbo.budCustDiscRate.discentrate
从dbo.budcustrate内部联接
dbo.budcusterDiscrate.DiscountID=dbo.budcusterDisc.DiscountID和dbo.budcusterDiscrate.JBCo=dbo.budcusterDisc.JBCo上的dbo.budcusterDisc
其中(dbo.budCustomerDisc.Customer=165)和BegBillAmt>=@Total和EndBillAmt发布您的表结构和所需结果,我们可能会使这更容易。我有四种不同的折扣,不同的BegBillAmt和EndBillAmt多部分标识符“budCustomerDisc.Customer”无法绑定。@user1723572您的内部联接不正确或丢失。我已经用完整的查询更新了我的答案。这两个都可以满足你的需要。非常感谢你。它确实有效。今天我的大脑停止工作了无法绑定多部分标识符“budCustomerDisc.Customer”。@user1723572请注意不同的表名。此查询缺少内部联接。