检查可能不存在的前几天的行

时间:2017-01-09 13:02:54

标签: tsql

我在检查昨天是否收到价格时遇到了一些麻烦,让我们说 - 我的苹果。

棘手的部分是,在存储价格的表格中,如果我昨天没有得到价格,就不会有与昨天相关的任何行。那么如果我想确定在我得到一些价格的前一天,我怎样才能每天进行检查?

1 个答案:

答案 0 :(得分:1)

如果您有一个Calendar表(例如,请参阅here),其中包含一个名为Date的字段,并对您的数据结构做出一些假设:

SELECT c.[Date], 
       ISNULL(p.Prices,'No Prices')
FROM Calendar c
LEFT JOIN Prices p ON c.[Date] = p.[Date]

您的问题不是很清楚,但它实际上甚至可能只是检查前一天是否存在行,而不是报告所有日期(在这种情况下我认为有多个产品):

SELECT DISTINCT 
    prod.Product,
    CASE WHEN prev.Product IS NULL 
         THEN 'No Prices for yesterday' 
         ELSE 'Prices recorded for yesterday'
    END AS PricesYesterday
FROM Prices prod
LEFT JOIN Prices prev ON prev.Product = prod.Product
                      AND prev.[Date] = dateadd(day,datediff(day,0,GETDATE()),0) - 1