SQL Server显示历史数据

时间:2011-11-27 14:33:49

标签: sql sql-server sql-server-2005

我正在使用SQL Server 2005.我有一个名为Product的表。现在我需要找出一个月内产品的价格。无论月底产品的价格是多少,实际上都是价格。为了使场景更清晰,我有以下示例:

CREATE TABLE Product(ProductID int, Product Varchar(50), Price Decimal(5,2), FromDate DateTime, ToDate Datetime);

数据可能如下所示:

INSERT INTO Product(ProductID, Product, Price, FromDate, ToDate)
SELECT 1,Pen,2.99,'01/15/2011','03/25/2011'
UNION
SELECT 2,Pen,3.99,'03/25/2011','05/02/2011'
UNION
SELECT 3,Pen,4.99,'05/02/2011',NULL

现在,Pen的当前价格是4.99,因为它的ToDate仍然是空的。现在,1月和2月的笔价格为2.99。笔的价格在3月25日变为3.99,因此3月笔的价格为3.99。笔的价格在5月再次变为4.99。因此,五月和前进笔的价格是五月。

现在,我需要编写一个sql脚本,它将给出给定月份产品的价格。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

以下内容适用,但您应注意,如果输入为5/02/2011,则价格为4.99。如果你希望它是3.99,只需将比较操作符更改为<和> =

Select price  
From
          Product
 Where
          Product = 'Pen'
          And fromdate <= @inputDate
      And (todate > @inputDate or todate is null)

Data.SE

上查看

答案 1 :(得分:0)

    SELECT * From Product where @monthenddate 
between FROMDATE and isNUll(TODate,get date())

我会留给你计算月结束日期