У меня есть две таблицы:
CREATE TABLE [dbo].[Invoice]
(
[InvoiceID] [uniqueidentifier] ROWGUIDCOL NOT NULL
)
CREATE TABLE [dbo].[InvoiceItem]
(
[InvoiceItemID] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[InvoiceID] [uniqueidentifier] NOT NULL,
[PriceBeforeTax] [decimal](12, 2) NOT NULL,
[PriceAfterTax] [decimal](12, 2) NOT NULL
)
В таблице Invoice
мне нужны два вычисляемых столбца:
- TotalSumBeforeTax
- TotalSumAfterTax
Я извлекаю вычисленные столбцы из функции:
CREATE FUNCTION ufnGetInvoiceSum
(@InvoiceID UNIQUEIDENTIFIER)
RETURNS @T TABLE (SumBeforeTax DECIMAL(16, 2) NOT NULL,
SumAfterTax DECIMAL(16, 2) NOT NULL)
AS
BEGIN
DECLARE @sumBeforeTax DECIMAL(16, 2)
DECLARE @sumAfterTax DECIMAL(16, 2)
SELECT @sumBeforeTax = SUM(PriceBeforeTax),
@sumAfterTax = SUM(PriceAfterTax)
FROM InvoiceItem
WHERE InvoiceID = @InvoiceID
INSERT INTO @T (SumBeforeTax, SumAfterTax)
VALUES (@sumBeforeTax, @sumAfterTax)
RETURN
END
Но как я могу в вычисляемых столбцах Invoice извлечь данные из ufnGetInvoiceSum
за один вызов?
Я не хочу вызывать ufnGetInvoiceSum
, чтобы получить TotalSumBeforeTax
, а затем вызвать его снова, чтобы получить TotalSumAfterTax
.
Могут ли два вычисляемых столбца получить данные из одной и той же дочерней таблицы за один вызов?
Я не уверен, что достаточно хорош, чтобы выразить себя.
:)