Сбой фильтра TSQL в sproc при преобразовании чисел - PullRequest
0 голосов
/ 01 февраля 2012

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

С учетом следующего:

DECLARE @ExternalPixelValue VARCHAR(MAX)
DECLARE @SecondsTriggerValue INT
DECLARE @Trigger INT

SELECT TriggerValue
FROM vw_ContainerBehaviouralPixels
WHERE TriggerValue < 9000

SELECT 
     @ExternalPixelValue = ExternalPixelValue,
     @SecondsTriggerValue = CONVERT(INT, TriggerValue), 
     @Trigger = SUM(p.LastEventTimeSpan) 
FROM 
     PageVisitEvents p 
     RIGHT JOIN 
     vw_ContainerBehaviouralPixels vwc ON p.AccountContainerID = vwc.AccountContainerID
WHERE
     vwc.SystemBehaviouralSegmentID = 2         -- minimum time on site
     AND 
     CONVERT(INT, vwc.TriggerValue) < (SELECT 99999)
GROUP BY
     ExternalPixelValue, TriggerValue

SELECT @ExternalPixelValue, @SecondsTriggerValue, @Trigger

Первый запрос возвращает значения: 10, 30, 60, 90, 180, 300, 360.

Теперь вставимзначение в подзапросе 11 возвращает 10;что-нибудь между 31 и 60 возвращает 30 и так далее.Проблема в том, что когда я вписываю что-либо в 180, 90 всегда возвращается.Когда я изменяю значение таблицы с 90 на 99, все равно возвращается только 99.

TriggerValue - это VARCHAR (512), поэтому преобразование там.Если фигурирует, фильтр распознает символ, а не числовое значение.Однако после использования CONVERT и CAST, я все еще вижу ту же проблему.

Любой совет?

Спасибо.

1 Ответ

0 голосов
/ 01 февраля 2012

Вы заполняете переменные

@ExternalPixelValue, @SecondsTriggerValue, @Trigger

снова и снова, поэтому, в конце концов, вы не можете контролировать значения, которые они содержат (значение из последнего чтения)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...