2014-01-20 3 views
0

У меня есть следующая таблица: -Суммирование с определенным условием

enter image description here

я могу получить это: -

enter image description here

с помощью простой SQL:

Select Grade, sum(Qty) Qty, sum(Length) Length 
from TableA 
where 
Serial like 'U4%' 

но мне нужно это: -

enter image description here

сорт 2Е основан на определенном состоянии ie.15% учетом избыточного класса 2. Рабочий выглядит следующим образом: -

15% of Grade 1 => 15% x 305 = 46 
Therefore, 2E is 190 (236-46). 

Я довольно новый & нужна помощь как я могу сделать этот раскол?

Спасибо.

+0

Вы можете посмотреть в 'between', например, http://www.1keydata.com/de/sql/sql-between.php – fuesika

+0

Упоминайте, почему и как использовать «между» для этого конкретного примера? – Bob

+2

В вашем запросе отсутствует 'GROUP BY'? Какой SQL-продукт (и какая версия) для этого? Всегда ли только два класса? Всегда ли они 1 и 2 классы? Является ли пособие всегда рассчитанным на 1-й класс для класса 2/2E? Или он всегда рассчитывается из класса с большей 'sum (Length)'? Что вы пробовали? Я задаю слишком много вопросов? –

ответ

0

Попробуйте

Select Grade, sum(Qty) Qty, sum(Length) Length 
from TableA 
where 
Serial like 'U4%' 

Unoin All 

Select * from 
(
Select Grade, null , sum(Length) - ((15/100) * sum(qty)) Length 
from TableA 
where 
Serial like 'U4%' 
) AS T 
where grade=2 
+0

Не работает. Кроме того, неправильно использовать «* sum (qty)». Это будет основано на длине, а не на qty. Однако длина основывается на 1 классе. – Bob

Смежные вопросы