我已經乘以TJM.intMaterialQuantity * TM.monMaterialCost這給了我在不同行中的每個材料項目的總數。我需要將這4個總計加起來並放到一個名爲monTotalMaterialCost的新列中。現在它的方式顯示monTotalMaterialCost中的每個材質。我如何將所有材料的總量合併爲一行,以便我可以在一行中看到工作和客戶以及總成本?如何將列的總數加在一起
SELECT
TJ.intJobID
,TC.intCustomerID
,TC.strLastName + ', ' + TC.strFirstName AS strCustomerName
,(SUM (TJM.intMaterialQuantity) * SUM (TM.monMaterialCost)) AS monTotalMaterialCost
FROM
TJobs AS TJ
,TJobCustomers AS TJC
,TCustomers AS TC
,TJobMaterials AS TJM
,TMaterials AS TM
WHERE
TJ.intJobID = TJC.intJobID
AND TJC.intCustomerID = TC.intCustomerID
AND TJM.intMaterialID = TM.intMaterialID
AND TJM.intJobID = TJ.intJobID
AND TJ.intJobID = 1
GROUP BY
TJ.intJobID
,TC.intCustomerID
,TC.strLastName + ', ' + TC.strFirstName
,TJM.intMaterialQuantity
,TM.monMaterialCost
樣例輸入
--Insert into TMaterials
INSERT INTO TMaterials (intMaterialID, strMaterials, monMaterialCost)
VALUES (1, 'Nails', '4.99')
INSERT INTO TMaterials (intMaterialID, strMaterials, monMaterialCost)
VALUES (2, 'Drywall per 32 sqft', '12.99')
INSERT INTO TMaterials (intMaterialID, strMaterials, monMaterialCost)
VALUES (3, '2 x 4', '1.89')
INSERT INTO TMaterials (intMaterialID, strMaterials, monMaterialCost)
VALUES (4, 'Paint per gallon', '32.00')
INSERT INTO TMaterials (intMaterialID, strMaterials, monMaterialCost)
VALUES (5, 'Tile per sqft', '4.99')
INSERT INTO TMaterials (intMaterialID, strMaterials, monMaterialCost)
VALUES (6, 'Copper Water 10ft line', '6.99')
INSERT INTO TMaterials (intMaterialID, strMaterials, monMaterialCost)
VALUES (7, 'Screws', '4.99')
INSERT INTO TMaterials (intMaterialID, strMaterials, monMaterialCost)
VALUES (8, 'Shingles', '40.99')
INSERT INTO TMaterials (intMaterialID, strMaterials, monMaterialCost)
VALUES (9, 'Tar Paper per sqft', '1.99')
--Insert into TJobMaterials
--Materials for Job 1 Customer 1
INSERT INTO TJobMaterials (intJobID, intMaterialID, intMaterialQuantity)
VALUES (1, 1, 50)
INSERT INTO TJobMaterials (intJobID, intMaterialID, intMaterialQuantity)
VALUES (1, 2, 20)
INSERT INTO TJobMaterials (intJobID, intMaterialID, intMaterialQuantity)
VALUES (1, 3, 20)
INSERT INTO TJobMaterials (intJobID, intMaterialID, intMaterialQuantity)
VALUES (1, 4, 5)
INSERT INTO TJobMaterials (intJobID, intMaterialID, intMaterialQuantity)
VALUES (1, 5, 35)
/*
Output I'm Getting
intJobID strJobDescription intJobStatusID strJobStatus monTotalMaterialCost
1 Kitchen Remodel 3 Complete 160.00
1 Kitchen Remodel 3 Complete 37.80
1 Kitchen Remodel 3 Complete 259.80
1 Kitchen Remodel 3 Complete 174.65
1 Kitchen Remodel 3 Complete 249.50
Output Wanted
intJobID strJobDescription intJobStatusID strJobStatus monTotalMaterialCost
1 Kitchen Remodel 3 Complete 881.75
I need the total of all 5 outputs into one final total into monTotalMaterialCost
*/
所需的輸出: intJobID = 1 strJobDescription =廚房改造strJobStatus =完全monTotalMaterialCost = 881.75
什麼我得到: intJobID = 1 strJobDescription =廚房改造strJobStatus =完成monTotalMaterialCost = 7391.80
發生了什麼:我有5種不同的材料從TJM.intMaterialQuantity。每行的每個值爲50,20,20,5,35然後,我從TM.monMaterialCost獲得5種不同的成本,這些值按照4.99,12.99,1.89,32.00,4.99的相同順序匹配。我得到了50 + 20 + 20 + 5 + 35 = 130和4.99 + 12.99 + 1.89 + 32.00 + 4.99 = 56.86所以我得到了最終方程130 * 56.86 = 7,391.80。
我需要的是50 * 4.99 = 249.50,20 * 12.99 = 259.80,20 * 1.89 = 37.80,5 * 32.00 = 160,35 * 4.99 = 174.65我需要將所有這些總計加在一起總計在工作材料上花費的總數爲881.75。
我希望這有助於更好地理解我的問題。
我已經想通了。我已經發布正確答案爲未來的問題:
SELECT
TJ.intJobID
,TJ.strJobDescription
,TJ.intJobStatusID
,TJS.strJobStatus
, SUM (TJM.intMaterialQuantity * TM.monMaterialCost) AS monTotalMaterialCost
FROM TJobs AS TJ
join TJobMaterials AS TJM on TJM.intJobID = TJ.intJobID
join TMaterials AS TM on TJM.intMaterialID = TM.intMaterialID
join TJobStatus AS TJS on TJ.intJobStatusID = TJS.intJobStatusID
GROUP BY
TJ.intJobID
,TJ.strJobDescription
,TJ.intJobStatusID
,TJS.strJobStatus
如果你可以給一個樣本輸入和輸出樣本它會更容易幫助你 – gh9
剛剛從組中刪除列TJM.intMaterialQuantity,TM.monMaterialCost BY子句 –
@IgorBorisenko不起作用。我得到73910.80。總數應該是3,138.75 –