【问题标题】:Creating a table view for invoice - Northwind为发票创建表格视图 - Northwind
【发布时间】:2018-04-27 07:18:37
【问题描述】:

我最近的任务有点问题。我正在使用旧的 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 创建一个单独的视图文件。它看起来根本不像真实的发票。

它应该类似于这样:

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

【问题讨论】:

  • 它看起来怎么样?可以发一下吗?
  • @FDavidov 你是说我的“观点”吗?它看起来很像一个带有选定 OrderID 的简单查询,它在“Views”文件夹中创建了一个文件,但它根本不像我帖子中的表格。
  • 这可能应该在您的表示层中处理,无论它可能是什么。 SQL Server 擅长生成结果集,但不擅长格式化它们。
  • 您的意思是创建报告而不是 mssql 视图?因为视图只显示为具有列和行的表格,并且没有像您发布的图像那样的格式布局
  • @PhamX.Bach 是的,我想这就是我需要的。

标签: sql sql-server northwind


【解决方案1】:

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

  1. 编写一个查询语句,该查询将根据 INVOICE 编号对尾随部分执行所有需要的计算(这可能与您已有的类似,只是它将对金额求和,计算税金和运费),

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

结果将是您已经拥有的 + 每条记录中的小计、税金、运费和总计。

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

【讨论】:

  • 不确定我是否知道该怎么做,正如我所说,仍在学习 SQL。但是我会尝试。如果我能得到我的结果,我会告诉你的!
  • 看到您的初始工作(发布的查询),我相信您很快就会到达那里。祝你好运!!!
  • 我被卡住了,我仍然不知道它应该是什么样子。可以举个例子吗?
猜你喜欢
  • 2018-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-11
  • 2021-11-02
相关资源
最近更新 更多