Danyal Awan Ответов: 1

Может ли кто-нибудь помочь в отладке SQL-запроса?


У меня возникли некоторые проблемы с некоторым запросом

Вот пример того, что я хочу

Цитата:

@QuantityEntered = 1 возвращает 1,50, потому что 1 попадает между 1 и 5, а 1,50 добавляется из поля цены в общей сложности 1,50
@QuantityEntered = 2 возвращает 3,00, потому что 2 падает между 1 и 5, а 1,50 добавляется из поля цены в общей сложности 3,00
@QuantityEntered = 3 возвращает 4,50, потому что 3 попадает между 1 и 5, а 1,50-это из поля цены, добавленного в общей сложности 4,50
@QuantityEntered = 4 возвращает 6.00, потому что 4 попадает между 1 и 5, а 1.50-это из поля цены, добавленного в общей сложности 6.00
@QuantityEntered = 5 возвращает 7,50, потому что 5 попадает между 1 и 5, а 1,50-это из поля цены, добавленного в общей сложности 7,50
@QuantityEntered = 6 возвращает 8,75, потому что 6 попадает между 6 и 10, а 1,25-это из поля цены, добавленного в общей сложности 8,75
@QuantityEntered = 7 возвращает 10.00, потому что 7 попадает между 6 и 10, а 1.25-это из поля цены, добавленного в общей сложности 10.00
@QuantityEntered = 8 возвращает 11,25, потому что 8 попадает между 6 и 10, а 1,25-это из поля цены, добавленного в общей сложности 11,25
@QuantityEntered = 9 возвращает 12.50, потому что 9 попадает между 6 и 10, а 1.25-это из поля цены, добавленного в общей сложности 12.50
@QuantityEntered = 10 возвращает 13,75, потому что 10 падает между 6 и 10, а 1,25-это из поля цены, добавленного в общей сложности 13,75
@QuantityEntered = 11 возвращает 14,75, потому что 11 попадает между 11 и 999999999, а 1,00-это из поля цены, добавленного в общей сложности 14,75
@QuantityEntered = 12 возвращает 15,75, потому что 12 попадает между 12 и 999999999, а 1,00-это из поля цены, добавленного в общей сложности 15,75


но я получаю это

Цитата:
@QuantityEntered = 1 возвращает 1.50
@QuantityEntered = 2 возвращает 3.00
@QuantityEntered = 3 возвращает 4,50
@QuantityEntered = 4 возвращает 6.00
@QuantityEntered = 5 возвращает 7,50
@QuantityEntered = 6 возвращает 8,75
@QuantityEntered = 7 возвращает 10.00
@QuantityEntered = 8 возвращает 11,25
@QuantityEntered = 9 возвращает 12.50
@QuantityEntered = 10 возвращает 20


Что я уже пробовал:

DECLARE @QuantityEntered int
DECLARE @ClassEntered int

SET @QuantityEntered = 1;
SET @ClassEntered = 1

--SELECT 
--  Sum(IIf(@QuantityEntered>[MaxValue],[MaxValue]*[Price],(@QuantityEntered-([MinValue]-1))*[Price])) AS RangePrice
--FROM 
--  TierPricing
--WHERE 
--  (((TierPricing.MinValue)<=@QuantityEntered) AND ((TierPricing.Class)=@ClassEntered));

--Select * from TierPricing
--WHERE 
--  (((TierPricing.MinValue)<=@QuantityEntered) AND ((TierPricing.Class)=@ClassEntered));


SELECT 
  Sum(IIf(@QuantityEntered>=TierPricing.MaxValue,TierPricing.MaxValue*TierPricing.Price,(@QuantityEntered-(TierPricing.MinValue-1))*TierPricing.Price)) AS RangePrice
FROM 
  TierPricing
WHERE 
  (((TierPricing.MinValue)<=@QuantityEntered) AND ((TierPricing.Class)=@ClassEntered));

Andy Lanng

Дважды проверьте свои границы полос. Возможно ли, что у вас где-то есть перекрытие?

Кроме того, пожалуйста, опубликуйте таблицу и сценарий данных, чтобы я мог сам воссоздать проблему

Спасибо ^_^

Aless Alessio

Если вы не опубликуете табличные данные, будет трудно понять, где ошибка моего друга ..

1 Ответов

Рейтинг:
1

Patrice T

Вы можете переформулировать проблему по-другому.

RangePrice = @QuantityEntered + IIF(@QuantityEntered <= 10 , @QuantityEntered, 10) * 0.25 + IIF(@QuantityEntered <= 5, @QuantityEntered, 5)* 0.25