【发布时间】:2016-08-20 01:27:49
【问题描述】:
请帮忙?这里只是一个菜鸟,开始学习如何编写 SQL 并遇到了这个问题。我知道如何使用MAX 函数,但我不知道如何将所有这些要求结合在一起。我有两张表,Accounts 和Books(下面是数据示例)
Accounts
ID Series YesorNot Dated Filed Plan Year
1 123 Yes 06/12/2015 2015
2 123 No 06/12/2015 2015
3 145 Yes 06/06/2015 2015
4 145 No 02/02/2015 2014
5 198 Yes 02/03/2015 2015
6 187 Yes 02/14/2013 2013
7 153 Yes 01/02/2011 2011
Books
Primary Key Date Created ID
1 06/13/2015 123
2 06/12/2015 123
3 06/07/2015 145
4 02/02/2015 145
5 02/03/2015 198
两个表:Accounts 和 Books
寻找:
1. 按项目 ID = 主键存在于两个表中的数据
2.我只想要一个unqiue系列(系列也=ID)
3. 我想要 Plan Year 的 MAX(最近)值,然后如果 Plan Year 有重复项,我需要 Date Created 的 MAX(最近)值。
4. 我只需要Project ID、Series、YesorNot、Date Filed、Plan Year 列,所以我的输出应该是这样的:
Project ID Series YesorNot Dated Filed Plan Year
1 123 Yes 06/12/2015 2015
3 145 Yes 06/06/2015 2015
4 145 No 02/02/2015 2014
5 198 Yes 02/03/2015 2015
【问题讨论】:
-
如果不创建临时表集并且可能有一些输出,这很难做到(由于条件 3)。如果 YesOrNot = No 是否总是表示 Accounts with the same Plan Year 中同一系列的多行?
-
“项目 ID = 主键同时存在于两个表中的数据”是什么意思?什么是项目 ID?那么 - 这两个表不是由第一个表中的 Series 和第二个表中的 ID 匹配吗?我希望您的表格不会被超过一对列“匹配”!
-
@BenHamilton - 你熟悉分析函数吗?
-
@mathguy 不,我不确定它们是否可以在我使用过的主要 DBMS 的 Ingres 中使用。 OP 正在使用 Oracle,但我从未使用过它。
-
@Tiffanyyim - 如果按计划年份出现平局,并且“系列”没有出现在 Books 表中会怎样?