【发布时间】:2015-08-07 19:57:23
【问题描述】:
我是 SQL 新手,如果我的命名法全都错了(或者如果解决方案非常明显),我深表歉意。
我的代码是这样的:
Select Client_id, Max(Year_end_date), Acct_Nbr
From (
-- ** subquery **
) As AA
Group By Client_id, Acct_nbr;
子查询中的列与主查询相同。但是我在答案中得到了一些重复 - 对于给定的 Client_id 含义相同 DB2 返回具有不同日期的多行 - 例如
Client_id | Year_end_date | Acct_nbr
-------------------------------------
20001 2003-12-31 01
20001 2005-12-31 01
知道为什么吗?
【问题讨论】:
-
请同时发布您的子查询
-
你有一个
group by,所以我最好的猜测是这些值实际上是不同的——只是隐藏的字符或意外的混淆,例如零和大写-O。 -
子查询有点长而且复杂。我想要得到的是,如果所有计算都在子查询中完成,我可以注释掉主查询以查看子查询结果 - 为什么子查询是什么重要?主查询应该只返回 max(Year_end_date),对吧?
-
@Ardia - 你是对的。不过,我有点好奇,因为列出的顶级查询通常不需要嵌套。如果有隐藏字符(通常是空格),则需要修复数据;在此语句中执行
TRIM来修复它并不是一个好的长期解决方案,因为它使数据库更难使用索引。 -
只是想补充一下:是的,问题出在 Acct_nbr 中。我只是没有注意到(一些)值是不同的。新手误区。再次感谢大家!