经常写一些联合查询,联合一多了,代码就成倍的增加,时间一长,连我自己也看不懂到底是什么意思了。做Oracle 的时候,就看到有个 WITH, 不过没有深入的看,就会 WITH 一个出来。
前几天又想用这个WITH,于是细心的查查了,原来 WITH 多个 联系查询的语法是这样的:
WITH PPC AS (
SELECT
A.*
FROM(
SELECT
ROW_NUMBER() OVER (PARTITION BY PPCMemberID ORDER BY CreatedOn DESC) AS RN,
PPCMemberID,PPC,DailyBudget,CreatedOn
FROM
CSK_Store_PPCBudgetHistory
) A
WHERE RN = 1
),
PPCM AS (SELECT PPCMemberID,RetailerID FROM CSK_Store_PPCMember),
RP AS (SELECT RetailerID,ProductID,PurchaseURL FROM CSK_Store_RetailerProduct WHERE ProductID = 1337534)
SELECT
RP.*,
PPCM.PPCMemberID,
PPC.PPC,PPC.DailyBudget
FROM
RP LEFT JOIN
PPCM ON RP.RetailerID = PPCM.RetailerID LEFT JOIN
PPC ON PPC.PPCMemberID = PPCM.PPCMemberID