У меня есть эти таблицы ....
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)?