SQL-запрос для возврата значения на основе данных в диапазоне - PullRequest
0 голосов
/ 09 ноября 2011

У меня есть две таблицы - список клиентов с общей суммой рядом с ними, у них также есть столбец типа и запись статуса.

Например,

CustomerName, TotalOR, Type, Status
Customer 1, 205, P, Maint
Customer 2, 199, S, Maint

и вторая таблицас подробной информацией о зоне обслуживания, в которую они попадают.

Band, Type, Status, TotalORFrom, TotalORTo
B1, P, Maint, 1, 199
B2, P, Maint, 199, 300
B3, S, Maint, 1, 199

То, что я хочу иметь, - это возвращение полосы для каждого клиента на основе данных TotalOR, типа и статуса.

Я пытался создать несколько запросов, чтобы получить все возможные диапазоны, но не конкретный диапазон.Любая помощь будет очень ценится.

Спасибо

1 Ответ

0 голосов
/ 09 ноября 2011

Предполагая, что первая таблица customer, а вторая таблица band:

SELECT band
FROM customer c
JOIN band b ON c.Type = b.Type
AND c.Status = b.Status
AND (c.TotalOR = b.TotalORFrom OR c.TotalOR = b.TotalORTo)

Редактировать: Я не могу сказать, пытаетесь ли вы присоединиться на основена TotalORFrom или TotalORTo, поэтому этот запрос объединяется на основе одного и того же.

Редактировать 2: Основываясь на вашем комментарии, вот новый запрос, обеспечивающий customer.TotalOR больше-или-равно band.TotalORFrom, а customer.TotalOR меньше-или-равно band.TotalORTo.

SELECT band
FROM customer c
JOIN band b ON c.Type = b.Type
AND c.Status = b.Status
AND c.TotalOR BETWEEN b.TotalORFrom AND b.TotalORTo

ОБНОВЛЕНИЕ: похоже, вышевызвать перекрытие B1 и B2 при 199 для P, Maint.Рассмотрим эту альтернативу для устранения перекрытия:

SELECT band
FROM customer c
JOIN band b ON c.Type = b.Type
AND c.Status = b.Status
AND c.TotalOR >= b.TotalORFrom
AND c.TotalOR < b.TotalORTo;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...