[英]Select Min Date value from subquery to main query
我正在嘗試獲取最小日期值作為主查詢中的一列,其中主查詢和子查詢具有內部聯接,並且最小日期值取決於來自主查詢聯接的3列的分組
我在主查詢Select語句中嘗試了子查詢,但是正如我的研究顯示的那樣,它們僅執行一次。 我嘗試了各種連接方式,但是無法獲得邏輯或語法。 我正在考慮將cte組合使用可能有效,但無法弄清楚(對於那些學習新技巧的老狗來說,對於這些高級查詢而言仍然太新了)
DECLARE
@StartBallDate date = '09-05-2009',
@StartLatDate date = '09-05-2009',
@Male int = 1,
@Female int = 4
SELECT T.*, E.StylID, C.PtsFirstRec
FROM dbo.tblPtsPerCompHistory AS T
INNER JOIN
(
SELECT Min(Comp_Date) PtsFirstRec, Competition_Idx
FROM tblCompetitions
GROUP BY Comp_Date, Competition_Idx
) C ON C.Competition_Idx = T.PtsCompID
INNER JOIN tblEvtStructure AS E ON E.EvtStruct_Idx = T.PtsStructID
WHERE E.SectnID Not Between 9 And 10 And (T.PtsMale = @Male Or T.PtsFemale = @Female And E.StylID = 1 And PtsFirstRec >= @StartBallDate) Or (T.PtsMale = @Male Or T.PtsFemale = @Female And E.StylID = 2 And PtsFirstRec >= @StartLatDate)
到目前為止,這給了我每一行的Comp_Date。 我需要達到的目的是可以在以后的程序中使用其他地方的數據
T.PtsMale T.PtsFemale C.Comp_Date E.StylID PtsFirstRec
1 4 2009-05-05 1 2009-05-05
1 4 2009-05-05 2 2009-05-05
1 4 2010-03-16 1 2009-05-05
1 202 2015-03-25 1 2015-03-25
1 4 2015-03-25 2 2009-05-05
1 202 2016-07-17 1 2015-03-25
因此,我擁有所有行,其中Ptsmale或PtsFemale但是最小日期值PtsFirstRec是配對的最早日期,也由E.StylID分組
這是另一個窗口函數:
DECLARE
@StartBallDate date = '09-05-2009',
@StartLatDate date = '09-05-2009',
@Male int = 1,
@Female int = 4
SELECT T.*, E.StylID, MIN(C.PtsFirstRec) OVER (PARTITION BY T.PtsMale T.PtsFemale, E.StylID ORDER BY C.Comp_Date ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) [NewValue]
FROM dbo.tblPtsPerCompHistory AS T
INNER JOIN
(
SELECT Min(Comp_Date) PtsFirstRec, Competition_Idx
FROM tblCompetitions
GROUP BY Comp_Date, Competition_Idx
) C ON C.Competition_Idx = T.PtsCompID
INNER JOIN tblEvtStructure AS E ON E.EvtStruct_Idx = T.PtsStructID
WHERE E.SectnID Not Between 9 And 10 And (T.PtsMale = @Male Or T.PtsFemale = @Female And E.StylID = 1 And PtsFirstRec >= @StartBallDate) Or (T.PtsMale = @Male Or T.PtsFemale = @Female And E.StylID = 2 And PtsFirstRec >= @StartLatDate)
如果您包含測試數據,我們將能夠確保代碼確實可以正常工作。 但是應該遵循這些原則。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.