【发布时间】:2014-02-01 04:13:43
【问题描述】:
我在 Oracle 中有一个包含 100.000 多行的表。 该表有 40 多个变量:
var1 var2 var3 var4 var5 ... varN
1 10 1.1.2011 2 1
1 10 1.2.2011 3 2
2 10 1.5.2012 2 1
2 20 1.1.2013 3 2
2 20 1.3.2013 6 3
3 10 .. .. ..
4 10
4 10
4 10
4 20
4 30
4 30
5 10
6 10
7 10
7 20
...
我想要得到的结果是每个唯一 var1 的不同 var2:
var1 var2
1 10
2 10
2 20
3 10
4 10
4 20
4 30
...
以及同一行中每个不同 var2 的最旧日期 (var3) 和 var5
和每个不同 var2 的最大 var4
结果应该是:
var1 var2 var3 var4 var5 ... varM
1 10 1.1.2011 3 1
2 10 1.5.2012 2 1
2 20 1.1.2013 6 2
...
我想根据这些结果创建一个视图,那么最有效的方法是什么?视图会经常被查询,所以它必须是高效的。
【问题讨论】:
-
我们希望
var3是一个实际的日期/时间戳类型,而不是那种格式的 varchar……它不能很好地排序。将来,请使用 ISO (YYYY-MM-DD) 使这一点更清晰,并防止混淆您的示例数据是 mdy 还是 dmy... -
Var3 是一个日期变量。我以这种格式查看结果并忘记将其放入 iso 格式。感谢您指出这一点。
标签: sql oracle select view distinct