我有这张桌子。...
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
有一个名称为superService
的Service字段,如软件包。
该包由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
。
但是,我不知道该怎么做。
我的问题 如何将计数乘以另一个数字字段(使用分组依据)?
答案 0 :(得分:0)
如果我没做错任何事情,您只需要将所有内容合并在一起,将其归类即可。您不需要乘以一个计数,因为这是隐式完成的。各自(超级?)服务(我没有得到实体)的行在未分组的集中出现两次。当然是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;