Несколько вычисляемых столбцов из одной дочерней таблицы? - PullRequest
0 голосов
/ 08 октября 2019

У меня есть две таблицы:

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.

Могут ли два вычисляемых столбца получить данные из одной и той же дочерней таблицы за один вызов?

Я не уверен, что достаточно хорош, чтобы выразить себя.

:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...