簡體   English   中英

SQL聚合

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM