2014-10-09 78 views
-1

我試圖將最後一條記錄帶到組中。 這是我嘗試使用的查詢,但它將帶來組中的第一條記錄。sql查詢帶來組中的最後一條記錄

SELECT 
"hba"."ID", 
"hba"."session_number", 
"hba"."u_c", 
"hba"."u-v", 
"hba"."date" 
FROM "hba" 
GROUP BY "hba"."ID","hba"."session_number" 

任何幫助,非常感謝。

+1

」什麼是「」所有「」「雙」「引號」?此外,將解釋「last」意味着什麼是有用的...... – 2014-10-09 18:33:12

+0

某些工具以這種方式生成SQL。例如,Cognos就是這樣做的。讓我的頭受傷閱讀它。 – Andrew 2014-10-09 18:34:16

+1

我刪除了SQL Server標記,因爲此查詢在SQL Server中(以及除MySQL以外的幾乎任何數據庫引擎中)都會失敗 – Lamak 2014-10-09 18:34:21

回答

0

我在這裏猜測。它看起來像你的ID字段是自動增加的。它看起來像你希望你的查詢爲session_number的每個不同的值呈現一行,並且該行應該是最近插入的那一行(當你把它放在「最後一行」時)。

讓我們從檢索每個組的最近行的ID開始。

SELECT MAX(ID) AS ID, session_number 
    FROM hba 
GROUP BY session_number 

然後,讓我們用它作爲子查詢並將它加入到表中。

SELECT a.ID, a.session_number, u_c, u_v, date 
    FROM hba AS a 
    JOIN (
     SELECT MAX(ID) AS ID, session_number 
      FROM hba 
     GROUP BY session_number 
     ) AS b ON a.ID = b.ID 
ORDER BY a.session_number 

看看這是怎麼回事?首先定義「最後一行」的含義並構建一個子查詢來實現該定義。然後,使用該子查詢從主表中獲取所需的數據。然後你以可用的方式訂購最終結果集。

出於某種原因,您沒有在您的問題中透露您正在使用Crystal Reports。您可能會發現使用MySQL客戶端從您的數據庫創建包含所需信息的視圖很有幫助,然後使用Crystal從該視圖渲染結果集。

+0

MAX()屬性不起作用,因爲Crystal報告給我一個錯誤,試圖在命令中輸入此查詢 – Dagz200 2014-10-09 19:26:01

0
SELECT "hba"."ID", "hba"."session_number", "hba"."u_c", "hba"."u-v", "hba"."date" 
    FROM "hba" 
GROUP BY "hba"."ID","hba"."session_number" ORDER BY "hba"."ID" desc,"hba"."session_number" desc 

是你所需要做的。 「

+0

我嘗試了它,但它不起作用,它仍然帶有第一條記錄和最近的記錄(last記錄) – Dagz200 2014-10-09 19:19:27

+0

@ Dagz200,我已編輯查詢。請立即檢查並讓我知道。 – 2014-10-09 19:34:48

+0

仍然得到相同的結果。對不起 – Dagz200 2014-10-09 19:40:09

相關問題