1

と呼ばれるビューがあるとしますvProducts

vProductsからデータを選択しますtblProducts, tblCategories, tblProductPrices

これら 3 つのテーブルにはそれぞれ、dateUpdatedtypeという名前の列がありますDateTime

私の見解では、私はまた呼ばれる列を持ちたいと思いますdateUpdated

これは、またはの最新のものである必要がありdateUpdatedます。tblProductstblCategoriestblProductPrices

これは可能ですか?

4

2 に答える 2

2

CASEステートメントを使用して、3 つの日付のうちどれが最新の日付であるかを判断できます。

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 .........

3 つの条件のいずれかが常に適用されます (それ以外の場合は19000101、値として取得されます) 。

于 2012-08-30T11:28:49.057 に答える
0

を使用UNIONして、3つのテーブルからすべての日付を取得し、次に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
于 2012-08-30T11:14:07.667 に答える