假设我有一个名为vProducts
vProducts
从tblProducts, tblCategories, tblProductPrices
这3个表中的每一个都有一个名为dateUpdated
的{{1}}类型的列。
在我看来,我想要一个名为DateTime
这应该是dateUpdated
,dateUpdated
或tblProducts
中tblCategories
的最新内容。
这可能吗?
答案 0 :(得分: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
作为值)
答案 1 :(得分: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