經常寫一些聯合查詢,聯合一多了,代碼就成倍的增加,時間一長,連我自己也看不懂到底是什么意思了。做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