Выберите умножение по количеству SQL, Group By, Oracle - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть эти таблицы ....

TableHead tblHead
 - Date schedule
 - Number idCode

Date       idCode
2018/05/12 10007
2018/05/15 10008
2018/09/18 19892
2018/11/20 19897
2018/05/15 23404

TableDetail tblDetail
 - Number headCode
 - Varchar2 superService

headCode superService
10007    S67900
10008    S89333
10008    S89335
19892    A45899
19892    P41899
19897    A89320
23404    S89333
23404    P41899

TableInternal
 - Varchar2 superService
 - Varchar2 nameService
 - Number(15,2) quantity

superService  nameService  quantity
S89333        1000045677   2.1
S89335        3002344444   0.7
P41899        1000045677   5.6
P41899        2000045679   4.3

Таблица TableHead имеет поле даты, а TableDetail имеет внешний ключ для idCode.Теперь TableDetail имеет поле Service с именем superService как пакет.

Пакет описывается таблицей TableInternal с полем quantity и содержит поле nameService.

Другими словами ... поле superService содержит quantity раз nameService

Я хочу получить Пример для findByDate=2018/05/15, затем коды 10008 и 23404 из TableHead должны быть обработаны.

Теперь 1008 код имеет S89333 и S89335, а 23404 имеет S89333 и P41899.

Возобновление, мне нужно обработать два раза S89333 и один раз S89335 и P41899

Теперь для подробного обслуживания ...

nameService   schedule    Total
1000045677    2018/05/15  2*2.1 + 5.6
3002344444    2018/05/15  0.7
2000045679    2018/05/15  4.3  

Мой запросНеправильно ... но я не знаю, как это сделать,

SELECT 
tblInt.nameService, TO_DATE(TO_CHAR(tblHead.schedule,'dd/MM/yy')), COUNT (*) subTotal
FROM TableDetail tblDetail,  TableHead tblHead, TableInternal tblInt
WHERE tblHead.idCode = tblDetail.headCode
AND tblDetail.superService = tblInt.superService
AND TO_CHAR(tblHead.schedule,'dd/MM/yy') =:findByDate
GROUP BY 
tblInt.nameService, TO_CHAR(tblHead.schedule,'dd/MM/yy')
ORDER BY TO_DATE(TO_CHAR(tblHead.schedule,'dd/MM/yy')) DESC;

Теперь я хочу получить поле Total, где значение равно subTotal * tblInt.quantity в том же Query.

Но я не знаю, как это сделать.

Мой вопрос Как умножить счет на другое числовое поле (используя group by)?

1 Ответ

0 голосов
/ 26 декабря 2018

Если я ничего не понял неправильно, вам просто нужно объединить все это, сгруппировать и получить свою сумму.Вам не нужно умножать на счет, потому что это неявно сделано.Строки для соответствующей (супер?) Службы (я не получаю сущности) дважды появляются в разгруппированном множестве.И конечно 2,1 + 2,1 = 2 * 2,1.

SELECT i.nameservice,
       h.schedule,
       sum(i.quantity) total
       FROM tablehead h
            INNER JOIN tabledetail d
                       ON d.headcode = h.idcode
            INNER JOIN tableinternal i
                       ON i.superservice = d.superservice
       WHERE h.schedule = to_date('2018-05-15', 'YYYY-MM-DD')
       GROUP BY i.nameservice,
                h.schedule;

дБ <> скрипка

...