(Слишком много, чтобы помещать в поле для комментариев)... отвечу позже.
Какова цель вашего nJobID = 3524, вас интересует только одна работа? Если это так, ваш запрос даст вам общее количество только для задания 3525, независимо от всех заданий, возвращенных из предложения WHERE задания.
Я поработаю над запросом, но вы не хотите DISTINCT.
Кроме того, у вас есть только jobCharge.nArrcInv, .nCostInv, .nSaleInv, но позже вы используете SUM( jobcharge.nAccrInv )... Ваше НАМЕРЕНИЕ получить сумму начисленных затрат, сумму фактических затрат, сумму продаж за задание описание??? включая другое содержимое заголовка задания?
Похоже, вам нужны обе суммы по отдельным подгруппам для каждого типа работы ПЛЮС общая сумма всех продаж по всей работе... может быть, вам нужно вот это...
SELECT
Job.cJobRef AS JobRef,;
Job.cName AS Customer_Name, ;
Job.cJobType AS JobType, ;
Job.cJobMode AS JobMode, ;
Job.cOrigin AS Org,;
Job.cDestination AS Dest,;
Job.cOwner AS Owner,;
JCSubTotals.Invoice_Desc,;
JCSubTotals.Accrued_PerDesc,;
JCSubTotals.Actual_PerDesc,;
JCSubTotals.Sales_PerDesc,;
JCFinalTotals.Total_Accrued,;
JCFinalTotals.Total_Actual,;
JCFinalTotals.Total_Sales;
from ;
( select jc.nJobID,;
jc.cInvoiceDescr as Invoice_Desc, ;
sum( jc.nAccrInv ) as Accrued_PerDesc, ;
sum( jc.nCostInv ) as Actual_PerDesc, ;
sum( jc.nSaleInv ) as Sales_PerDesc ;
from ;
JobCharge jc;
where ;
jc.nJobID = 3524 ;
group by ;
jc.nJobID,;
jc.cInvoiceDescr ) JCSubtotals ;
JOIN ;
( select jc.nJobID,;
sum( jc.nAccrInv ) as Total_Accrued, ;
sum( jc.nCostInv ) as Total_Actual, ;
sum( jc.nSaleInv ) as Total_Sales ;
from ;
JobCharge jc;
where ;
jc.nJobID = 3524 ;
group by ;
jc.nJobID ) JCFinalTotals ;
ON JCSubtotals.nJobID = JCFinalTotals.nJobID ;
JOIN Job ;
on JCSubtotals.nJobID = Job.nID;
На самом деле я дал вам еще несколько столбцов для отображения в каждой строке, ее Итоги по описанию работы И ИТОГО по сравнению со всей работой (для начисленных, фактических и продаж). Вы всегда можете игнорировать столбцы, которые вам не нужны, но это дает вам представление о том, что, как я думаю, вы хотите.
Кроме того, я предполагаю, что последнее соединение с таблицей «JOB» (поскольку не предоставлено), его столбец первичного ключа представляет собой просто «nID» вместо «nJob_ID» (в качестве внешнего ключа к таблице jobCharge).
Если бы вы хотели, чтобы эти результаты охватывали весь набор заданий, я бы просто удалил соответствующие предложения «WHERE» из запросов JobCharge.
person
DRapp
schedule
25.10.2011