-8

我有一个 SQL 语句,它可以根据今天的日期获取一些数据,并将其填充到 linkbutton.Text 中。如果今天没有足够的数据,它应该用昨天的数据填充它。这是我到目前为止编写的 SQL 语句:

"SELECT * FROM table1 WHERE cat = 1 and datee = @dt ORDER BY datee DESC ";
4

2 回答 2

1

我建议不要限制日期,只需决定您想要多少结果并选择TOP(x)它们的数量:

例如,如果您想要从今天开始并在需要时返回到明天(以及更远)的 20 个最新结果,您可以这样做:

"SELECT TOP(20) * FROM table1 WHERE cat = 1 ORDER BY datee DESC ";

如果您将来可能有日期,则可以通过添加以下 where 子句来限制它们:

"SELECT TOP(20) * FROM table1 WHERE cat = 1 AND datee <= @dt  ORDER BY datee DESC ";

@dt今天的日期在哪里


当然,如果您的规则更具体,即如果 Today 有 24 个条目,您应该返回 24 个结果,或者您不希望以这种方式限制总数,那么我建议您进行两个查询,例如:

var results = GetResultsForToday();

if(results.Count() < 20)//not enough!
    result.Add(GetResultsForYesterday());
于 2013-06-14T10:44:47.353 回答
0

或者你可以使用BETWEEN除了TOP语句之外:

SELECT TOP(10) * FROM table1 WHERE cat = 1 and  
datee BETWEEN DATEADD(day, -1, @dt) AND @dt 
ORDER BY datee DESC 
于 2013-06-14T12:28:25.417 回答