【发布时间】:2016-10-12 23:25:47
【问题描述】:
下面是我们需要加入的 3 个表来获取数据
TableA TableB TableC
AId BId Name CId DeclareDate value
1 1 abc 1 September 11
2 2 def 1 October 12
3 3 xyz 1 November 13
4 4 pqr 1 December 14
5 5 ghi 2 September 15
3 October 16
4 August 17
5 October 18
5 December 19
在 TableC 中,我们有相同的基金,CId 1 在所有 4 个月内都在声明,在这种情况下,我只需要 12 月的行,如果基金在 12 月没有声明,那么我需要获取该 C id 的空值. 所以输出表应该如下所示。
输出表
AId BId name DeclareDate value
1 1 abc December 14
2 2 def null null
3 3 xyz null null
4 4 pqr null null
5 5 ghi december 19
所以最后如果 12 月没有声明日期则返回 null,如果有多个声明日期则仅返回 12 月记录。
请提出建议。
【问题讨论】:
-
请分享您到目前为止所尝试的内容。
-
你的逻辑不清楚。
-
@TimBiegeleisen 如果您考虑来自 tableC 的 Id 1 和 5 的资金,他们的声明日期是多个月,在这种情况下,我们只需要获得声明日期为 12 月的资金并忽略剩余,如果您考虑其他基金 id 2,3,4 他们没有在 12 月声明,在这种情况下,我们需要返回 null 值而不是返回声明日期
-
为什么 1 和 5 选择了 12 月?是因为是最近一个月吗?
-
我试过这个,从 tableA 中选择(表中的列名) A 内连接 tableB B on A.AId = B.BId 内连接 TableC C on A.AId = C.CId where C.declareDate在“01-DEC-16”和“31-DEC-16”之间;上面的查询只返回了两条记录 1 和 5 AId BId name CId DeclareDate value 1 1 abc 1 December 14