创建发票的表格视图 - Northwind

时间:2018-04-27 07:18:37

标签: sql sql-server northwind

我的上一个任务有点问题。我正在使用旧的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

我需要将有关发票和客户的一般数据与订单本身,产品ID,数量等数据分开。 是否可以在SQL Server Management Studio中创建类似的东西?我该怎么办?

1 个答案:

答案 0 :(得分:1)

您的查询已经提供了标题(客户信息)和表格正文部分,因此您可以做的是(注意:这不是我要做的,但考虑到需要一个非常简单的解决方案):

  1. 根据INVOICE编号对查询执行所有必要的尾随部分计算(这可能类似于您已经拥有的计算,但它会汇总金额,计算税金和运费),

  2. 准备好该查询后,INNER将其加入到您已有的查询中(使用发票ID作为键);请注意,您必须将其他字段添加到顶部的SELECT列表中。

  3. 结果将是您已经拥有的+每个记录中的小计,税金,运费和总额。

    同样,这不是最有效和最优雅的解决方案,但符合您的需求(简单性和最终结果)。