我有兩張我正在使用的桌子。第一個QuarterDateMapping
持有約四分之三的開始和結束日期的信息:如何根據另一個查詢的輸出來選擇行?
GregorianQuarterName | GregorianMonthBeginDate | GregorianMonthEndDate
其中GregorianQuarterName
是nvarchar
用字符串命名季度格式「FY%Y-答疑q」和GregorianMonthBeginDate
和GregorianMonthEndDate
是datetime
對象。第二個表,QuarterlyRevenueData
,保存的信息需要查詢和具有格式:
Fiscal_Quarter | Product | Revenue
其中Fiscal_Quarter
具有相同的格式爲GregorianQuarterName
。我只想返回當前季度或之前的第二個表中的值。我已經想通了如何將當前季度從使用第一表返回:
SELECT QDMap.GregorianQuarterName AS most_recent_quarter
FROM QuarterDateMapping QDMap
WHERE QDMap.GregorianMonthBeginDate <= GetDate()
AND QDMap.GregorianMonthEndDate >= GetDate()
成功地返回當前季度(FY17-Q1)。我遇到的困難是試圖找出如何使用這個輸出來查詢第二個表。我曾嘗試:
;WITH QuarterData As
(
SELECT QDMap.GregorianQuarterName AS most_recent_quarter
FROM QuarterDateMapping QDMap
WHERE QDMap.GregorianMonthBeginDate <= GetDate()
AND QDMap.GregorianMonthEndDate >= GetDate()
)
SELECT * FROM QuarterlyRevenueData revdata
WHERE revdata.Fiscal_Quarter <= QuarterData.most_recent_quarter
然而,這給我的錯誤:
Msg 4104, Level 16, State 1, Line 9
The multi-part identifier "QuarterData.most_recent_quarter" could not be bound.
當我運行相同的查詢如上,但硬編碼的季度:
SELECT * FROM QuarterlyRevenueData revdata
WHERE revdata.Fiscal_Quarter <= 'FY17-Q1'
它運行如預期的那樣,並返回我想要的數據,但我希望我的查詢能夠自動更新。
謝謝你的幫助。讓我知道如果我的問題需要更多信息或更好的格式,這是我的第一個SQL問題。
這大部分工作,但我需要從'SELECT'語句中刪除'QDM.GregorianQuarterName,QDM.GregorianMonthBeginDate,QDM.GregorianMonthEndDate',以便獲取與篩選表格相同的數據。由於輸出包含3個額外的列,並且每一行上重複出現'QuarterDateMapping'的當前季度的數據。 – Barker