2014-10-09 65 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

相关问题