我正在使用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脚本,它将给出给定月份产品的价格。任何帮助将不胜感激。
答案 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)
上查看
答案 1 :(得分:0)
SELECT * From Product where @monthenddate
between FROMDATE and isNUll(TODate,get date())
我会留给你计算月结束日期