|
Select с сумированием по условию
|
|||
---|---|---|---|
#18+
Изделие кристаллы (запуск) кристаллы (годные) коэффициент посадкиИзделие №1 100 96 32Изделие №2 10 8 8Изделие №2 8 8 10 Имеется таблица представленная выше. Операция соответствующая этой таблице - посадка кристаллов в изделие, где кристаллы(запуск) - количество кристаллов предназначенных для посадки. кристаллы(годные) - сколько было посажено. Кристаллы садятся кратно коэффициенту. Т.е. в первом случае из 100 кристалов будет посажено 1*32 + 1*32 + 1*32 = 96 (4 в остатке). Внимание! Поле годные в реальной таблице не хранится, просто приведено для наглядности. Нужно посчитать количество годных. Посчитать годные можно по формуле - INT(запуск/коэффициент)*коэффициент = Целая часть(100/32)*32 = 3 * 32 = 96. Но, если коэффициент > запуск, то формула не работает и нужно просто брать значения "запуск." Например в случае №3 это будет 8. Можем сделать так: Код: sql 1.
Код: sql 1.
А можно так Код: sql 1.
Вопрос: корректен ли второй вариант (с одним селектом) и нет ли здесь подводных камней ? (По цифрам вроде работает, просто раньше никогда такого не делал). ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2017, 16:38 |
|
Select с сумированием по условию
|
|||
---|---|---|---|
#18+
Странно что второй вариант вообще работает. Ошибка должна быть, если только не VFP6 используется. Надо sum(iif()), а не наоборот. Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2017, 16:45 |
|
Select с сумированием по условию
|
|||
---|---|---|---|
#18+
VFP9, проверил только, что - iif(условие, sum(a), sum(b)) ошибки не выдает и вроде бы результат верный(хотя данных мало, чисто для теста делал). А насчет sum(iif()) - очевидное решение, туплю, видно я немного переработал =). Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2017, 16:53 |
|
|
start [/forum/topic.php?fid=41&fpage=14&tid=1581951]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 141ms |
0 / 0 |