Tsql 检查可能不存在的与前几天相关的行

Tsql 检查可能不存在的与前几天相关的行,tsql,Tsql,我在检查昨天是否收到苹果的价格时遇到了一些麻烦 棘手的是,在存储价格的表格中,如果我昨天没有得到价格,就不会有任何与昨天相关的行。因此,如果我想确保在我收到一些价格的前一天,我如何每天进行检查?如果您有一个日历表(例如,请参阅),其中有一个名为日期的字段,并对您的数据结构做出一些假设: SELECT c.[Date], ISNULL(p.Prices,'No Prices') FROM Calendar c LEFT JOIN Prices p ON c.[Date] = p.[

我在检查昨天是否收到苹果的价格时遇到了一些麻烦


棘手的是,在存储价格的表格中,如果我昨天没有得到价格,就不会有任何与昨天相关的行。因此,如果我想确保在我收到一些价格的前一天,我如何每天进行检查?

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

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

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

您可以使用a并连接到它,这样您就可以为每个不同的日子创建一个记录,只是有些日子的prices表中没有任何记录,因此将返回一个
NULL
值,您可以将该值
ISNULL()
转换为其他值。
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