2017-06-13 2 views
0

Ich bin schon seit einiger Zeit hier und versuche eine weitere Unterabfrage zu schreiben, um [Gesamtvertrag] - [Gesamtkosten] zu subtrahieren. Beide Unteranfragen laufen gut, aber ich konnte keine weitere Unterabfrage schreiben, um beide für eine gewünschte Spalte von [Profit] zu subtrahieren. Meistens kehren die Abfragen, die ich versuche, einfach zurück und sagen, dass die Unterabfrage mehr als einen Wert zurückgegeben hat. Jede Hilfe wird sehr geschätzt! Dies ist, was ich bisher habe:ursprünglicher Job mit vielen Bestellungen

SELECT MAN_PROD_ORDER.PROD_ORDER_NUM, 
(SELECT SUM(SAL_SALES_ORDER.AMOUNT_INCLUDING_TAX) 
FROM SAL_SALES_ORDER 
WHERE (SAL_SALES_ORDER.ORIG_SALES_ORDER_ID = MAN_PROD_ORDER.SALES_ORDER_ID or SAL_SALES_ORDER.SALES_ORDER_ID = MAN_PROD_ORDER.SALES_ORDER_ID) 
     and SAL_SALES_ORDER.SAL_ORDER_STATUS_ID not in (6, 8)) as [total contract], 
(SELECT SUM(PROD_ORDER_LEDGER_ENTRY.TOTAL_COST) 
FROM PROD_ORDER_LEDGER_ENTRY 
WHERE MAN_PROD_ORDER.PROD_ORDER_ID = PROD_ORDER_LEDGER_ENTRY.PROD_ORDER_ID AND PROD_ORDER_LEDGER_ENTRY.ENTRY_TYPE_ID = 1) as [total cost] 
FROM MAN_PROD_ORDER 
+0

bitte versuchen Sie SQLs strucutre - so leichter wird für jedermann zu lesen –

+0

und haben einen Blick auf eine der grundlegendsten Dinge: https://blogs.msdn.microsoft.com/craigfr/2006/07/19/introduction-to-joins/ –

+0

Entschuldigung, dass. Ich wusste nicht, dass es so aussehen würde, wie es war ... Wird es das nächste Mal besser machen! – Mike

Antwort

0

wie dies irgendwie Sollte funktionieren:

SELECT MAN_PROD_ORDER.PROD_ORDER_NUM 
     ,SUM(SAL_SALES_ORDER.AMOUNT_INCLUDING_TAX) AS total_contract 
     ,SUM(PROD_ORDER_LEDGER_ENTRY.TOTAL_COST) AS total_cost 
     ,SUM(SAL_SALES_ORDER.AMOUNT_INCLUDING_TAX - PROD_ORDER_LEDGER_ENTRY.TOTAL_COST) as profit 
    FROM MAN_PROD_ORDER 
    LEFT OUTER JOIN SAL_SALES_ORDER 
    ON (SAL_SALES_ORDER.ORIG_SALES_ORDER_ID = MAN_PROD_ORDER.SALES_ORDER_ID OR 
     SAL_SALES_ORDER.SALES_ORDER_ID  = MAN_PROD_ORDER.SALES_ORDER_ID) 
    AND SAL_SALES_ORDER.SAL_ORDER_STATUS_ID NOT IN (6, 8) 
    LEFT OUTER JOIN PROD_ORDER_LEDGER_ENTRY 
    ON MAN_PROD_ORDER.PROD_ORDER_ID = PROD_ORDER_LEDGER_ENTRY.PROD_ORDER_ID 
    AND PROD_ORDER_LEDGER_ENTRY.ENTRY_TYPE_ID = 1 
GROUP BY MAN_PROD_ORDER.PROD_ORDER_NUM