Ich brauche Hilfe beim Zusammenfügen der Ergebnisse der beiden folgenden Abfragen. Sie haben zwei inkompatible Bedingungen, daher fällt es mir schwer, sie in einer Abfrage zu kombinieren.
Gesamtumsatz seit Jahresbeginn
Wie kombiniere ich die Ausgabe beider Abfragen?
SELECT
sum(datediff(returndate, dueDate)*(products.rentalfee*0.2)) AS 'Late Fees YTD'
FROM products INNER JOIN orderdetails
ON products.productID = orderdetails.productID
WHERE returndate > duedate
Und
SELECT
sum(products.RentalFee*orderdetails.quantity)
AS 'Total Revenue YTD'
FROM products INNER JOIN orderdetails
ON products.productID = orderdetails.productID
WHERE returndate > duedate OR duedate = returndate
Antwort1
Sie könnten versuchen, beide Abfragen in der Select-Klausel einer dritten Abfrage zu verwenden, bei der die Tabelle, aus der Sie auswählen, DUAL ist. Dadurch kann eine Zeile mit den Ergebnissen beider Abfragen zurückgegeben werden.
Beispiel:
Abfrage:
WÄHLEN (WÄHLEN Summe(Datum/Diff(Rückgabedatum, Fälligkeitsdatum)*(Produkte.Mietgebühr*0,2)) VON Produkten INNER JOIN Bestelldetails EIN Produkte.Produkt-ID = Bestelldetails.Produkt-ID WHERE Rückgabedatum > Fälligkeitsdatum) AS 'Verspätungsgebühren YTD' ,(WÄHLEN Summe(Produkte.Mietgebühr*Bestelldetails.Menge) VON Produkten INNER JOIN Bestelldetails EIN Produkte.Produkt-ID = Bestelldetails.Produkt-ID WO Rückgabedatum > Fälligkeitsdatum ODER Fälligkeitsdatum = Rückgabedatum) als „Gesamtumsatz YTD“
VON DUAL;
Ergebnis:
+---------------+---------------------+ | Verzugsgebühren seit Jahresbeginn | Gesamtumsatz seit Jahresbeginn | +---------------+---------------------+ | 3 | 4 | +---------------+---------------------+