2017-01-09 29 views
0

我在檢查昨天是否收到價格 - 我的蘋果時遇到了一些麻煩。檢查可能不存在的與前幾天有關的行

棘手的部分是,在存儲價格的表格中,如果我昨天沒有收到價格,那麼就不會有與昨天有關的任何行。那麼,如果我想確定前一天我有一些價格,我怎麼能每天做我的支票?

+0

您可以使用[日曆表](http :// stackoverf low.com/questions/5635594/how-to-create-a-calender-table-for-100-years-in-sql)並加入到這個項目中,這樣你就可以在每個不同的日子裏記錄下來,只是有些人不會有價格表中的任何記錄都將返回一個'NULL'值,您可以將'ISNULL()'轉換爲其他值。 – 3N1GM4

回答

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 
相關問題