2013-02-26 3 views
1

할인을 계산 @ 총에 따라 discountRate. 그건 내 총 금액 인 경우는 2를 반환한다는 의미입니다 3,500,000나는이 같은 고객 할인 테이블이

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) ......... 

난 그냥 반환 할 여기서 중요한 것은 당신이 찾고있는 것을 그것을

+0

테이블 구조와 원하는 결과를 게시하면보다 쉽게 ​​만들 수 있습니다. – sgeddes

답변

1

쓸 필요가 모르는 죄송합니다 @Total이 BegBillAmt와 EndBillAmt 사이에있을 때의 값입니다. 올바른 DiscountRate를 반환하려고합니다. 이렇게하려면 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 

불분명하다 때때로 BETWEEN (도대체 나는 그들이 오히려 데이터베이스 필드 곳은 SQL 서버의 외부 지원, 또는이 같은 경우에있어 확실하지 않다 정적 변수보다). 그래서 여기에 두가지 수표가 있습니다 :

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 

희망 사항은 당신에게 도움이 될 것입니다.

+0

나는 4 가지의 다른 discountRate를 가지고 있는데, 다른 경우는 begbillAmt와 EndBillAmt이다. 다중 부품 식별자 "budCustomerDisc.Customer"는 바인딩 될 수 없다. –

+0

@ user1723572 내부 조인이 잘못되었거나 없습니다. 전체 쿼리로 내 대답을 업데이트했습니다. 이 두 가지 모두 당신이 필요로하는 것을해야합니다. –

+0

정말 고마워요. 그것은 효과가있다. 오늘 내 마음은 일을 그만 둔다. :) –

2
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 
+0

다중 부품 식별자 "budCustomerDisc.Customer"를 바인딩 할 수 없습니다. –

+0

@ user1723572 다른 테이블 이름을 기록해 둡니다. 이 쿼리에 내부 조인이 없습니다. –