Я имел взгляд на различные ответы здесь и сделали несколько экспериментов.
В частности, я использую MariaDB 10.1.
Для «простого», что вы можете делать то, что Роберт D предложил в своем комментарии:
SELECT Price_Per_SqFt, (Price_Per_SqFt/2) AS col1, (SELECT col1 + 1) AS col2 FROM Items
Если вы используете какое-то агрегатная функцию с внутренним соединением вы не можете использовать это, но вы может сочетать этот подход с внутренним соединением подход следующим образом (NB «налог с продаж» НДС = ... и NB в финансовых данных валютных полей, как правило, имеют 4 знака после запятой, я думаю, что это исторический ...)
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
Я хотел использовать приведенное выше, чтобы создать View
, чтобы перечислить счета-фактуры wi их промежуточных итогов, НДС и итогов ... выяснилось, что MariaDB (и почти наверняка MySQL) не допускает вложения в предложение FROM
. Однако это легко решить, сделав первый View
, который перечисляет InvoiceNo
и Subtotal
, а затем делает второй View
, который ссылается на первый. По правде говоря, я вообще не знаю, как это устроено в двухэтажном варианте: View
.
@OMG Ponies Mind разработка? "@total_sale: =" - это недостаточно объявление? – rzetterberg
Это настройка переменной, а не объявление ее. Объявление означает либо использование оператора 'SET', либо производного таблицы/встроенного представления. –
«Вы также можете присвоить значение переменной пользователя в операторах, отличных от SET. В этом случае оператор присваивания должен быть: = и not =, потому что последний рассматривается как оператор сравнения = в операторах без SET:« – rzetterberg