0
我在我的SQL查詢中有以下情形。我必須在我的查詢中使用ROW_NUMBER()
,其中一些集合函數也用於獲取結果。如何使用ROW_NUMBER()以及集合函數?
SELECT
@TotalRequests = ReportCount.TotalCount,
@TotalTimeToRespond = ReportCount.TotalTimeToRespond,
@TotalRequestsHavingQnA = ReportCount.TotalRequestsHavingQnA,
@ResponseCompliance = ReportCount.ResponseCompliance,
@TotalSubmissions = ReportCount.TotalSubmissions
FROM
(SELECT
TotalCount = Count(1),
TotalTimeToRespond = SUM(Datediff(DAY, DCR.DateReceivedInCB, DCR.DueDate)),
TotalRequestsHavingQnA = SUM(CASE
WHEN DCR.NoOfQuestionsAsked IS NULL
OR DCR.NoOfQuestionsAsked = 0 THEN 0
ELSE 1
END),
ResponseCompliance = Sum(CASE
WHEN DCR.NoOfQuestionsAsked IS NULL
OR DCR.NoOfQuestionsAsked = 0 THEN 0
ELSE (Cast(DCR.NoOfQuestionsAnswered AS DECIMAL) * 100)/Cast(DCR.NoOfQuestionsAsked AS DECIMAL)
END),
TotalSubmissions = Sum(CASE
WHEN DCR.DateSubmitted IS NOT NULL THEN 1
ELSE 0
END),
rowNumber = Row_number()
OVER (
PARTITION BY DCR.callref
ORDER BY DCR.DateSubmitted DESC)
FROM
DimCBComparisonReport DCR
INNER JOIN
DimClientLoc DCL ON DCR.ClientLocKey = DCL.ClientLocKey
WHERE
Ltrim(Rtrim(DCL.LocId)) IN (SELECT PARAM
FROM Fn_splitparam(@LocationIdList, ','))
AND (CASE
WHEN @EnabledDateType = 'D' THEN DCR.DueDate
ELSE DCR.DateSubmitted
END) BETWEEN @StartDate AND @EndDate
AND DCL.ContractId = @ContractRef
AND DCR.EmployeeKey IS NOT NULL) ReportCount
WHERE
ReportCount.rowNumber = 1
所以在這裏我得到一個例外,如:
消息8120,級別16,狀態1,過程etl_CaseBuilder_get_Location_Compliance_Summary 41行
列 'DimCBComparisonReport.CallRef' 在選擇列表中無效因爲 它不包含在聚合函數或GROUP BY 子句中。
任何幫助將深表謝意。
你想達到什麼目的。添加樣本數據和預期結果 –
您正在使用哪個dbms? (某些特定於產品的SQL在那裏...) – jarlh
您的選擇查詢將只返回一條記錄,您可以直接將其分配給不需要'row_number'的變量。如果您正在嘗試實現其他內容,請解釋 –