У меня есть подзапрос, который возвращает значение.Если это значение превышает диапазон, выбранный внешним запросом, оно должно вернуть самое высокое значение внешнего запроса.
С учетом следующего:
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, я все еще вижу ту же проблему.
Любой совет?
Спасибо.