Sql中的日期查询
Posted
技术标签:
【中文标题】Sql中的日期查询【英文标题】:Date query in Sql 【发布时间】:2011-06-23 05:16:44 【问题描述】:我有一张桌子,那里有are 5 columns
,比如说a,b,c,d,tran_date
。
我想生成一个查询来找出表中每个 a,b,c,d
的最小 tran_date。
任何帮助如何做到这一点。
编辑:这个查询的结果需要从查询的结果中减去一个日期:
select ref_date from ref_table
如何做到这一点,因为错误ORA-01427: single row subquery returns more than one row
。
【问题讨论】:
不确定“表中每个 a、b、c、d 的最小 tran_date”是什么意思?您能否提供一些示例数据以及输出应该是什么?此外,您使用的 SQL 风格也会有所帮助。 @CamJackson 我正在使用 Oracle SQL 【参考方案1】:如果我理解正确,请尝试类似
SELECT a,
b,
c,
d,
MIN(tran_date) MIN_tran_date
FROM Table
GROUP BY a,
b,
c,
d
【讨论】:
【参考方案2】:扩展@astander 的答案以包括额外的减法要求:
select a, b, c, d,
min(tran_date) as min_tran_date,
min(tran_date) - (select ref_date from ref_table) as diff
from my_table
group by a, b, c, d;
请注意,diff
可能是正数或负数,具体取决于 ref_date
是在所有 tran_date
值之前、之后还是在中间某个位置。
如果您只对某些 diff
值感兴趣 - 例如,最小的 tran_date
在 ref_date
之后 - 您可以添加 having
子句来过滤结果;在这种情况下:
having min(tran_date) - (select ref_date from ref_table) > 0
或者说得更清楚:
having min(tran_date) > (select ref_date from ref_table)
【讨论】:
【参考方案3】:SELECT A, Min(SomeDate) FROM Foo GROUP BY A
【讨论】:
以上是关于Sql中的日期查询的主要内容,如果未能解决你的问题,请参考以下文章