◆关于两个字段的DISTINCT

牧牛人软件 2006-02-13 10:23:05
有数据:
DATE SNO AMOUNT
2005-1-12 001 1212.30
2005-1-12 002 852.30
2005-1-12 002 1852.30
2005-2-10 001 72.00
2005-2-10 001 570.00
2005-3-12 003 9005.00
==============================
DATE与SNO同时重复的不要显示,希望结果:
2005-1-12 001 1212.30
2005-1-12 002 852.30

2005-2-10 001 72.00

2005-3-12 003 9005.00
---------------------------------
可以用DISTINCT实现吗?

我知道可以用 RANK() OVER(PARTITION BY...)实现,但我不希望用这样的嵌套查询。
...全文
391 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
goldarcher2005 2006-03-02
  • 打赏
  • 举报
回复
楼上说的对,RANK() OVER(PARTITION BY...)实现也就是要排序的
如果是无规则的,RANK() OVER(PARTITION BY...)也是实现不了的
超叔csdn 2006-03-02
  • 打赏
  • 举报
回复
SELECT distinct DATE,SNO,MIN(AMOUNT)over(partiton by date,sno) AS AMOUNT
FROM TB_NAME
qiaozhiwei 2006-03-02
  • 打赏
  • 举报
回复
SELECT DATE,SNO,MIN(AMOUNT) AS AMOUNT
FROM TB_NAME
GROUP BY DATE,SNO
boydgmx 2006-02-13
  • 打赏
  • 举报
回复
2005-1-12 002 852.30 【在结果集中出现】
2005-1-12 002 1852.30 【不出现】

你这种需求比较特殊,是不是说前两个字段如果完全相同,那么第三个字段取小的那个呢?
因为Oracle中的数据没有什么绝对的前后关系,所以你不能说取前面那个。

如果是取小的那个,那么:

SELECT DATE,SNO,MIN(AMOUNT) AS AMOUNT FROM xxx GROUP BY DATE,SNO ORDER BY 1,2;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧