Создание табличного представления для счета-фактуры - Northwind - PullRequest
0 голосов
/ 27 апреля 2018

У меня небольшая проблема с моими последними заданиями. Я использую старую базу данных Northwind. Сначала мне нужно было создать запрос, который даст мне всю важную информацию для выставления счета. Мой запрос выглядит так:

SELECT       b.OrderID, 
             b.CustomerID, 
            c.CompanyName, 
            c.Address, 
            c.City,  
            c.PostalCode, 
            c.CountryID as CustomersCountryID, 
            concat(d.FirstName,  ' ', d.LastName) as Salesperson,   
            a.CompanyName as ShippingVia, 
            e.ProductID, 
            f.ProductName, 
            e.Quantity, 
            e.UnitPrice * e.Quantity * (1 - e.Discount) as ExtendedPrice
from Shippers a 
inner join Orders b on a.ShipperID = b.ShipVia 
inner join Customers c on c.CustomerID = b.CustomerID
inner join Employees d on d.EmployeeID = b.EmployeeID
inner join [Order Details] e on b.OrderID = e.OrderID
inner join Products f on f.ProductID = e.ProductID
order by b.OrderID

Он работает, он дает мне все заказы, сделанные с информацией. Но теперь мне нужно создать табличное представление для счета с определенным OrderId. Когда я пишу что-то вроде этого:

CREATE VIEW FAKTURA AS
SELECT       b.OrderID, 
             b.CustomerID, 
            c.CompanyName, 
            c.Address, 
            c.City,  
            c.PostalCode, 
            c.CountryID as CustomersCountryID, 
            concat(d.FirstName,  ' ', d.LastName) as Salesperson,   
            a.CompanyName as ShippingVia, 
            e.ProductID, 
            f.ProductName, 
            e.Quantity, 
            e.UnitPrice * e.Quantity * (1 - e.Discount) as ExtendedPrice
from Shippers a 
inner join Orders b on a.ShipperID = b.ShipVia 
inner join Customers c on c.CustomerID = b.CustomerID
inner join Employees d on d.EmployeeID = b.EmployeeID
inner join [Order Details] e on b.OrderID = e.OrderID
inner join Products f on f.ProductID = e.ProductID
WHERE b.OrderID = 10248

Я просто создаю отдельный файл представления для этого конкретного OrderID. Это совсем не похоже на счет в реальной жизни.

enter image description here

Это должно выглядеть примерно так:

enter image description here

Мне нужно отделить общие данные о счете и клиенте от данных о самом заказе, идентификаторе продукта, количестве и т. Д. Можно ли создать нечто подобное в SQL Server Management Studio? Как я могу это сделать?

1 Ответ

0 голосов
/ 27 апреля 2018

Ваш запрос уже содержит заголовок (информация о клиенте) и части тела таблицы, поэтому вы могли бы сделать следующее (ПРИМЕЧАНИЕ: это НЕ то, что я бы сделал, но, учитывая необходимость иметь очень простое решение):

  1. Фраза запроса, который будет выполнять все необходимые вычисления для задней части на основе номера счета-фактуры (это может быть похоже на то, что у вас уже есть, за исключением того, что он будет СУММАТЬ суммы, рассчитать налоги и стоимость доставки),

  2. Как только вы подготовите этот запрос, ВНУТРЕННИЙ СОЕДИНИТЕ его к тому, который у вас уже есть (используя идентификатор счета в качестве ключа); Обратите внимание, что вам придется добавить дополнительные поля в верхний список SELECTs.

Результатом будет то, что у вас уже есть + промежуточный итог, налог, стоимость доставки и общая сумма в каждой записи.

Опять же, это НЕ самое эффективное и элегантное решение, но оно соответствует вашим потребностям (простота и конечный результат).

...