Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
pigzi Member Откуда: Сообщений: 9 |
Доброго дня. Никак не дойдет как построить запрос. Есть таблица
Мне нужно получить сумму, которая считается по формуле: sum(a01, a02 по FL 1) + sum(a03, a04 по FL 2) Запрос следующий select sum(T1.amount)+sum(T2.amount) from worktable t1, worktable t2 where t1.ac in ('a01', 'a02') and t1.fl = '1' and t2.ac in ('a03', 'a04') and t2.fl = '2' По идее должен получиться результат (12 + 14) + (17 + 15) = 58. Сумма получается гораздо больше правильной. Что я делаю не так? |
||||||||||||||||||||||||||||
13 июн 13, 14:21 [14428371] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Используйте CASE внутри SUM |
13 июн 13, 14:24 [14428405] Ответить | Цитировать Сообщить модератору |
SHok_by Member Откуда: Minsk Сообщений: 51 |
SELECT SUM(AMOUNT) as Result FROM worktable WHERE (AC IN ('a01', 'a02') AND FL = 1) OR (AC IN ('a03', 'a04') AND FL = 2) |
13 июн 13, 14:40 [14428548] Ответить | Цитировать Сообщить модератору |
pigzi Member Откуда: Сообщений: 9 |
Всем спасибо за помощь - понял в чем ошибка |
13 июн 13, 15:49 [14429209] Ответить | Цитировать Сообщить модератору |
pigzi Member Откуда: Сообщений: 9 |
Извиняюсь, но опять туплю. 2 таблицы worktable
acc
b01 соответствует a01 b02 соответствует a02 b03 соответствует a03 b04 соответствует a04 нужно рассчитать b01 = a01 (по fl 3) / (sum(a01, a02 по FL 1) + sum(a03, a04 по FL 2)) b02 = a02 (по fl 3) / (sum(a01, a02 по FL 1) + sum(a03, a04 по FL 2)) b03 = a03 (по fl 3) / (sum(a01, a02 по FL 1) + sum(a03, a04 по FL 2)) b04 = a04 (по fl 3) / (sum(a01, a02 по FL 1) + sum(a03, a04 по FL 2)) запрос SELECT t1.ac, t3.amount / (t2.amount) FROM acc t1, worktable t2, worktable t3 WHERE t3.fl = '3' and t3.ac = case t1.ac when 'b01' then 'a01' when 'b02' then 'a02' when 'b03' then 'a03' when 'b04' then 'a04' end and (t2.ac IN ('a01', 'a02') AND t2.fl = 1) OR (t2.ac IN ('a03', 'a04') AND t2.fl = 2) GROUP BY t1.ac возвращает ошибки |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
13 июн 13, 19:41 [14430438] Ответить | Цитировать Сообщить модератору |
gang Member Откуда: Сообщений: 1394 |
pigzi, У Вас классическая сферическая ошибка в вакууме. Для ее исправления нуден ключ на 13 и масло обязательно 0W40 лейте. |
14 июн 13, 09:58 [14432129] Ответить | Цитировать Сообщить модератору |
pigzi Member Откуда: Сообщений: 9 |
gang, благодарю за помощь! сегодня утром сам разобрался в ошибке. без ключа и масла не получилось бы) |
14 июн 13, 15:31 [14434420] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |