|
Помогите с запросом |
☑ |
0
Pasha_mix
09.10.12
✎
10:43
|
Есть две таблицы:
Первая таблица условия для начисления премии, вторая сумма с которой будет начислена премия.
Как в запросе выбрать максимальную ставку для начисления премии?
Пример:
Условия
1000 руб - 5%
5000 руб - 10%
10000 - 15%
Оборот = 6000.
Если брать условие, что Суммаоборота > МинОборота, то под это условие подпадает и 5% и 10%
Запрос для примера:
ВЫБРАТЬ
Обороты.Контрагент,
Обороты.Оборот,
Условия.Процент КАК Процент,
ВЫБОР
КОГДА Обороты.Оборот >= Условия.МинОборот
ТОГДА Обороты.Оборот / 100 * Условия.Процент
ИНАЧЕ 0
КОНЕЦ КАК Премия,
Условия.МинОборот КАК МинОборот
ИЗ
(ВЫБРАТЬ
"Вася" КАК Контрагент,
10000 КАК Оборот
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Петя",
20000) КАК Обороты
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
5 КАК Процент,
"Вася" КАК Контрагент,
5000 КАК МинОборот
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
3,
"Вася",
1000
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
10,
"Вася",
11000
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
18,
"Петя",
25000) КАК Условия
ПО Обороты.Контрагент = Условия.Контрагент
УПОРЯДОЧИТЬ ПО
Процент,
Премия
|
|
1
DrShad
09.10.12
✎
10:45
|
сделай запросом шкалу, а потом по вхождению выбирай
|
|
2
Pasha_mix
09.10.12
✎
10:48
|
(1)Можно пример?
|
|
3
Axel2009
09.10.12
✎
10:49
|
нормальные люди делают градацию С ... ПО ...
|
|
4
DrShad
09.10.12
✎
10:50
|
(2) можно, погодь
|
|
5
GLazNik
09.10.12
✎
10:51
|
(2)
примерно так:
ВЫБРАТЬ
Таб1.Сумма,
Таб1.Процент,
Макс(Таб2.Сумма)
ИЗ
Условия КАК Таб1
ЛЕВОЕ СОЕДИНЕНИЕ Условия КАК Таб2
ПО Таб2.Сумма < Таб1.Сумма
СГРУППИРОВАТЬ Таб1.Сумма,Таб1.Процент
|
|
6
DrShad
09.10.12
✎
10:53
|
(5) +1
|
|
7
GLazNik
09.10.12
✎
10:54
|
+(5) Собственно Макс(Таб2.Сумма) это будет начало интервала (нужно добавить еще проверку на NULL для первого интервала), Таб1.Сумма это конец. Кидаем во временную таблицу и используем в конечном запросе
|
|
8
In-Vin
09.10.12
✎
11:02
|
(0) упорядочить по убыванию и прочитать верхнюю строку
|
|
9
Pasha_mix
09.10.12
✎
11:26
|
(5) А на примере кода для консоли отчета, можно привести пример? С группировкой что-то не выходит.
|
|
10
Pasha_mix
09.10.12
✎
11:33
|
(5) А, кажется понял....
|
|
11
Axel2009
09.10.12
✎
14:25
|
(5) а ненормальные пытаются играться с нарастающим итогом в том месте, где можно его обойти.
|
|