Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何为此编写SQL查询?_Sql Server_Sql Server 2005 - Fatal编程技术网

Sql server 如何为此编写SQL查询?

Sql server 如何为此编写SQL查询?,sql-server,sql-server-2005,Sql Server,Sql Server 2005,我的SQL Server表包含以下列: ID Product fare s1from s1to s1fare 1 Pen 500 9-Mar-2011 14-Mar-2011 400 2 copy 800 15-Mar-2011 10-Mar-201 900 3 Pencil 900

我的SQL Server表包含以下列:

ID      Product      fare       s1from         s1to            s1fare
1       Pen          500        9-Mar-2011     14-Mar-2011     400
2       copy         800        15-Mar-2011    10-Mar-201      900
3       Pencil       900        20-Mar-2011    25-Mar-2011     1000
我在网络表单上有两个文本框

当用户在文本框1中输入从2011年3月9日到2011年3月13日之间的日期时,文本框3中的票价将为400或500


如何为此编写SQL查询?

此处@date和@fare是用户定义的变量或输入

Select * from table 
where (@date between s1from   and s1to )
and fare       = @fare
试试这个

Declare @dateFrom as datetime
Declare @dateTo as datetime
set @dateFrom = '03/09/2011' -- this is the value from textbox 1
set @dateTo = '03/13/2011' -- this is the value from textbox 2

-- this query returns the fare based on the inputted values on dateFrom and dateTo
Select 
    TheFare=Case when @dateFrom >= Cast(Convert(varchar(20),s1from,101) as datetime) and
    @dateTo <= Cast(Convert(varchar(20),s1To,101) as datetime) then
    s1fare
    else fare
    end 
From YourTable

假设来自表示层的查询是一个参数化查询,并且您已经验证了textbox值实际上是日期,那么您的查询看起来就像我假设用户必须选择一个产品:

Select Case
        When @UserDateValue Between s1from And s1to Then s1fare
        Else fare
        End As fare
From MyTable
Where Product = @Product

我们可以为您提供许多实现这一点的方法,但您的表结构看起来不太好。如果答案对你有用,就接受吧。两个问题:如果我输入2011-03-01这样的日期会怎么样?如果我输入2011-03-15这样的日期会发生什么?也就是说,它如何知道如何使用票价列与s1fare列中的值?用户需要选择产品吗?这里有一个来自其他人的问题,他们可能正在处理几乎相同的问题。你也可以从这些答案中得到一些东西。