Sql 带折扣的月度销售的存储过程

Sql 带折扣的月度销售的存储过程,sql,stored-procedures,accounting,Sql,Stored Procedures,Accounting,我需要关于如何创建存储过程的建议,或者关于如何在我们公司创建用于生成月度销售报告的许多存储过程的建议。我缩短了表格,使其更易于理解: 我们有两张桌子: 商品销售,包括: Item_ID Name Store Sales_Date Sales_Price Quantity 和项目折扣,包括: Item_ID Name Store Sales_Price Date_From Date_To 说

我需要关于如何创建存储过程的建议,或者关于如何在我们公司创建用于生成月度销售报告的许多存储过程的建议。我缩短了表格,使其更易于理解:

我们有两张桌子:

  • 商品销售
    ,包括:

        Item_ID
        Name
        Store
        Sales_Date
        Sales_Price
        Quantity
    
  • 项目折扣
    ,包括:

        Item_ID
        Name
        Store
        Sales_Price
        Date_From
        Date_To
    
说明:每个月之后,我们不同的商店都会给我们发送一份关于他们有哪些折扣的报告。这些折扣可能从一天到几天不等,因此我们有日期从,日期到

我的想法是:为了制作此销售报告,我需要一个过程,首先获取
项目销售
中的所有销售,然后检查
项目折扣
中的所有折扣,并覆盖在选定期间具有类似
项目ID
名称
存储
的折扣

示例:因此,如果一个项目最初的销售价格为99,-然后折扣销售价格为79,-对于2014-01-02至2014-01-10,则必须覆盖该期间,以便报告显示正确的数字

这可以理解吗?在路上谁能帮我或给我一些建议?临时桌子适合这个吗


如果需要更多信息,我会提供

您可以在存储过程中使用
LEFT JOIN
创建报告,其中需要报告的月份和年份可以作为参数传递,如下所示:

SQL Server:

CREATE PROCEDURE GetSalesReport 
   @month INT, 
   @year  INT 
AS 
  SELECT isa.Item_ID,
         isa.Name,
         isa.Store,
         isa.Sales_Date,
         COALESCE(id.Sales_Price, isa.Sales_Price) AS SalesPrice,
         isa.Quantity
       FROM ITEM_SALES AS isa
       LEFT JOIN ITEM_DISCOUNT AS id
       ON  isa.Item_ID = id.Item_ID
       AND isa.Name = id.Name
       AND isa.Store = id.Store
       AND isa.Sales_Date BETWEEN id.Date_From AND id.Date_To 
       WHERE MONTH(isa.Sales_Date) = @month AND YEAR(isa.Sales_Date) = @year

你要求的是SQL——我认为这在MySQL中相对容易解决,但我不确定解决方案是否是纯SQL99。你想看看吗?是的,那太好了。这是所有的销售记录。你想要本月的报告吗?这对我来说似乎是正确的方向@DipenduPaul,我以为你想要所有的销售?我想能够选择monthSorry我以为我给它贴上了标签,Microsoft SQL Server 2008 R2;)