【发布时间】:2014-02-28 03:05:19
【问题描述】:
我有两个表中的数据,我有一个查询组合数据,如下所示。我正在尝试根据 Id 列消除重复项,在该列中我选择了具有最早拆分日期的记录。任何人都可以帮助我使用 SQL 语句来实现这一点吗?
|ID |SecID |ReportingDate |SplitDate |Adjustor|
|1465 |2 |31-Dec-09 |01-Nov-10 |0.1 |
|1465 |2 |31-Dec-09 |27-Dec-12 |0.2 |
|1466 |2 |31-Dec-10 |27-Dec-12 |0.2 |
|1468 |2 |31-Dec-11 |27-Dec-12 |0.2 |
|1469 |2 |31-Dec-08 |01-Nov-10 |0.1 |
|1469 |2 |31-Dec-08 |27-Dec-12 |0.2 |
结果应该如下:
|ID |SecId |ReportingDate |Adjustor |
|1469 |2 |31-Dec-08 |0.1 |
|1465 |2 |31-Dec-09 |0.1 |
|1466 |2 |31-Dec-10 |0.2 |
|1468 |2 |31-Dec-11 |0.2 |
更多信息:
让我解释一下我想在这里做什么。
在基本面表中,我有一行具有唯一的行 ID、secId(产品标识符)和该行的报告日期。
此信息需要使用 splitdetails 表中的信息进行调整,该表具有适用日期、它影响的 secId(product) 以及要使用的调整器比率。
对于基本面表中的每一行:
- 在拆分表中没有条目的任何 secId 处,调整器应为 1。
- 如果 secId 存在于拆分表中,则要使用的拆分是最旧的拆分,其日期早于所检查的基本面表报告日期。
我希望从上面的示例中得到的结果最终看起来像这样:
| ID |SecId |ReportingDate |调整器 |
|1469 2 08 年 12 月 31 日 0.1
|1465 2 09 年 12 月 31 日 0.1
|1466 2 2010 年 12 月 31 日 0.2
|1468 2 2011 年 12 月 31 日 0.2
|1467 2 2012 年 12 月 31 日 1
我使用的查询是
选择 Gotten.ID、Gotten.SecID、Gotten.ReportingDate、Gotten.SplitDate、调整器
来自
(选择 tblFundamentalsDetails.id、tblFundamentalsDetails.SecId、tblFundamentalsDetails.ReportingDate、tblSplitDetails.SplitDate、tblSplitDetails.Adjustor
FROM tblFundamentalsDetails
左连接 tblSplitDetails
开(tblFundamentalsDetails.ReportingDate
【问题讨论】:
-
两张表有关系吗?我认为删除第一个表中的重复行需要这种关系。
-
@NaserE 对于延迟回复我深表歉意。我不是要删除,而是要过滤掉重复项。
标签: sql ms-access group-by aggregate-functions