sql查询计算不正确,可能缺少组?
我正在使用sqlite,我有一个几乎可以正常工作的查询。不过,每周工作时数的计算结果并不正确。我试图计算我的员工在给定日期范围内为特定客户花费了多少小时。时间存储在时间表行文件中的单独字段(周一、周二、周三、周四、周五、周六、周日)中的1条记录中。当然,可能有多条记录与该customerID关联,因此我使用Sum来计算总数。如果我不使用每周小时数的总和,并且在时间表行文件中只有一条记录,则计算将返回正确的值。人工费率的计算也出现了错误。这是一个奇怪的例子,因为我需要计算每周花费的时间,然后乘以为客户工作的员工的成本率。每个员工可能有不同的成本率sql查询计算不正确,可能缺少组?,sql,sqlite,Sql,Sqlite,我正在使用sqlite,我有一个几乎可以正常工作的查询。不过,每周工作时数的计算结果并不正确。我试图计算我的员工在给定日期范围内为特定客户花费了多少小时。时间存储在时间表行文件中的单独字段(周一、周二、周三、周四、周五、周六、周日)中的1条记录中。当然,可能有多条记录与该customerID关联,因此我使用Sum来计算总数。如果我不使用每周小时数的总和,并且在时间表行文件中只有一条记录,则计算将返回正确的值。人工费率的计算也出现了错误。这是一个奇怪的例子,因为我需要计算每周花费的时间,然后乘以为
SELECT c.customerID, c.customer, sum(il.line_price) AS net, sum (tl.mon + tl.tues + tl.wed + tl.thurs + tl.fri + tl.sat + tl.sun) AS weekly_hours,
sum( (tl.mon + tl.tues + tl.wed + tl.thurs + tl.fri + tl.sat + tl.sun) * s.cost_rate ) AS labour_rate
FROM customer AS c
LEFT JOIN invoice AS i
ON c.customerID = i.customerID
LEFT JOIN invoice_line AS il
ON i.invoiceID = il.invoiceID
LEFT JOIN timesheet_line AS tl
ON c.customerID = tl.customerID
LEFT JOIN timesheet AS t
ON tl.timesheetID = t.timesheetID
LEFT JOIN staff AS s
ON t.staffID = s.staffID
LEFT JOIN project AS p
ON tl.projectID = p.projectID
WHERE (i.date BETWEEN '2015-03-01' AND '2015-12-01') OR
(tl.customerID = c.customerID AND t.date BETWEEN '2015-03-01' AND '2015-12-01')
GROUP BY c.customerID
ORDER BY c.customer ASC
如果任何工作日列包含
NULL
值,则总和将不正确。啊,好的,不是所有的字段day字段都有值。我想我必须在where子句中为每一天设置一个NOTNULL条件?类似的。我把它放在Select语句中,但我猜这不是你的意思,因为它会产生旧的结果和(ifnull(tl.mon,0)+ifnull(tl.tues,0)+ifnull(tl.wed,0)+ifnull(tl.thurs,0)+ifnull(tl.fri,0)+ifnull(tl.sat,0)+ifnull(tl.sun,0))每周一小时