[英]SQL aggregation
以下是通過Business Objects包執行的T-SQL。 我的問題是,是否有較短的方法來完成查詢的以下聚合:
(SELECT tblName.Details
FROM tblName
WHERE tblName.ID = (SELECT Max(tblName2.ID)
FROM tblName tblName2
WHERE tblMainQuery.id = tblName2.id
AND tblName2.StartDate = (SELECT Max(tblName3.StartDate)
FROM tblName tblName3
WHERE tblMainQuery.id = tblName3.id)))
tblMainQuery.id是一個使其成為相關子查詢的字段。
因此,總而言之,我想將整個查詢實現為子查詢,在其中我要檢索最近開始日期的ID,但是由於最近開始日期可能返回多個記錄,因此請轉到主查詢。鍵級別並檢索最高的主鍵。
我知道使用CTE會有所幫助,但這是不可能的,因為必須通過Business Objects Web Intelligence執行-不支持此功能。
我可能會嘗試ROW_NUMBER
。 按startDate排序以獲取最大startDate,按ID進一步排序以獲取屬於最大StartDate的最大ID。 然后僅選擇ROW_NUMBER
= 1的記錄。
嘗試這個
SELECT *
FROM tblName A
JOIN (SELECT TOP 1 Row_number()
OVER (
ORDER BY startdate, id) row_n,
*
FROM tblName
ORDER BY row_n DESC) B
ON A.id = b.id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.