用于查找上次日期的SQL查询

时间:2016-12-06 18:29:16

标签: sql

我们在生产的第二天在数据库中输入我们的生产数据,我使用以下查询来获取昨天的数据。

查询工作正常,直到周末之后,周一没有显示任何内容,因为周末没有生产。

无论如何,我可以更改查询以显示生产的最后一天。

SELECT Date, ProductCode
FROM Production
WHERE (ProductCode In ('35032','40112-I','41212-I','50112','824-5'))                   
AND (Date=Dateadd(dd,-1,Convert(char(8),Current_timestamp,112)))

1 个答案:

答案 0 :(得分:2)

一个简单的解决方案,使用CASE语句检查是否是星期一,如果是,则减去3天而不是1天。

SELECT  Date, ProductCode
FROM    Production
WHERE   (ProductCode In ('35032','40112-I','41212-I','50112','824-5'))                   
AND     (Date=Dateadd(Day, Case When DatePart(WeekDay, Current_Timestamp) = 2 Then -3 Else -1 End, Convert(Date, Current_Timestamp)))

另一个(更精确的)解决方案是提取表格中最近的Date,而不是今天的Date

SELECT  Date, ProductCode
FROM    Production
WHERE   (ProductCode In ('35032','40112-I','41212-I','50112','824-5'))                   
AND     (Date= (Select Max(Date) From Production Where Date <> Convert(Date, Current_Timestamp)))