【发布时间】:2018-04-05 09:06:41
【问题描述】:
我想要这样的查询(这不起作用!)
select * from foo where rownum < 10 having distinct bar
意思是我想从十个随机行中选择所有列,在列栏中具有 distinct 值。如何在 Oracle 中做到这一点?
这是一个例子。我有以下数据
| item | rate |
-------------------
| a | 50 |
| a | 12 |
| a | 26 |
| b | 12 |
| b | 15 |
| b | 45 |
| b | 10 |
| c | 5 |
| c | 15 |
结果例如
| item no | rate |
------------------
| a | 12 | --from (26 , 12 , 50)
| b | 45 | --from (12 ,15 , 45 , 10)
| c | 5 | --from (5 , 15)
没有不同的项目编号
【问题讨论】:
-
添加一些示例表数据和预期结果。 (格式化文本,而不是图像。)
-
您可以调整来自stackoverflow.com/q/41477607/330315 的答案。特别是stackoverflow.com/a/41477646/330315 只需删除
order by newid()part -
DISTINCT始终适用于整行,否则没有意义。如果您只想获得item的每个值,您可以使用GROUP BY item并生成一个规则,该规则为item的每个值选择rate的可能值中的一个值。但是,GROUP BY` 不会将表中的完整行放入结果集中;它生成放入其结果集中的行。 -
您的所有价格在项目组中都是不同的。例如,a 组中的 12 有何不同?我想你需要澄清一下。