Ich habe mir hier verschiedene Antworten angesehen und ein paar Experimente durchgeführt.
Insbesondere verwende ich MariaDB 10.1.
Für eine "einfache" Sache können Sie tun, was Robert D in seinem Kommentar vorgeschlagen hat:
SELECT Price_Per_SqFt, (Price_Per_SqFt/2) AS col1, (SELECT col1 + 1) AS col2 FROM Items
Wenn Sie eine Art Aggregatfunktion mit einem inneren Join verwenden, können Sie diese nicht verwenden. Sie können diesen Ansatz jedoch wie folgt mit dem inneren Join-Ansatz kombinieren (NB MwSt. = "Umsatzsteuer" ... und NB in Finanzdatenwährung) Felder haben normalerweise 4 Dezimalstellen, ich denke es ist historisch ...)
SELECT
invoices.invoiceNo, invoices.clientID, invoices.Date, invoices.Paid,
invoicesWithSubtotal.Subtotal,
ROUND( CAST( Subtotal * invoices.VATRate AS DECIMAL( 10, 4 )), 2 ) AS VAT,
(SELECT VAT + Subtotal) AS Total
FROM invoices
INNER JOIN
( SELECT Sum( invoiceitems.Charge ) AS Subtotal, invoices.InvoiceNo FROM invoices
INNER JOIN invoiceitems ON invoices.InvoiceNo = invoiceitems.InvoiceNo
GROUP BY invoices.InvoiceNo ) invoicesWithSubtotal
ON invoices.InvoiceNo = invoicesWithSubtotal.InvoiceNo
Ich wollte das oben View
Gesagte verwenden, um Rechnungen mit ihren Zwischensummen, Mehrwertsteuer und Summen aufzulisten. Es stellte sich heraus, dass MariaDB (und mit ziemlicher Sicherheit MySQL) das Verschachteln in der FROM
Klausel nicht zulassen . Dies lässt sich jedoch leicht lösen, indem Sie eine erste View
erstellen, die das InvoiceNo
und auflistet Subtotal
, und dann eine zweite View
erstellen, die auf die erste verweist. In Bezug auf die Leistung habe ich überhaupt keine Ahnung von dieser Art von Doppelanordnung View
.