2012-08-30 13 views
1

說我有一個視圖中選擇表的最新日期欄的值,稱爲vProducts入門從視圖中的

vProductstblProducts, tblCategories, tblProductPrices

選擇數據的每個這些3代表的有一個稱爲類型的dateUpdatedDateTime

在我看來,我想有一列,也被稱爲dateUpdated

這應該是取其從dateUpdatedtblProductstblCategoriestblProductPrices最新的。

這可能嗎?

回答

2

你總是可以只使用一個CASE語句來確定三個日期是最近的一次:

CREATE VIEW vProducts AS 
    SELECT 
     (your list of columns here....),  
     DateUpdated = 
     CASE  
      WHEN p.DateUpdated >= c.DateUpdated AND p.DateUpdated >= pr.DateUpdated 
      THEN p.DateUpdated 
      WHEN c.DateUpdated >= p.DateUpdated AND c.DateUpdated >= pr.DateUpdated 
      THEN c.DateUpdated 
      WHEN pr.DateUpdated >= c.DateUpdated AND pr.DateUpdated >= p.DateUpdated 
      THEN pr.DateUpdated 
      ELSE 
      '19000101' 
     END 

    FROM 
     dbo.tblProducts p 
    INNER JOIN 
     dbo.tblCategories c ON ....... 
    INNER JOIN 
     dbo.tblProductPrices pr ON ......... 

之一三個條件應該始終適用(否則你會得到19000101作爲值)

0

使用UNION讓所有的日期從三個表,然後ORDER他們:

;WITH cte AS 
(
    SELECT dateUpdated FROM tblProducts 
    UNION ALL 
    SELECT dateUpdated FROM tblCategories 
    UNION ALL 
    SELECT dateUpdated FROM tblProductPrices 
) 
SELECT dateUpdated FROM cte 
ORDER BY dateUpdated DESC