我正在尝试从下表中查找行
T_Date | Code | TWS
2018-01-01 | A0001 | TRDR001
2018-01-01 | A0001 | TRDR002
2018-01-02 | A0002 | TRDR001
2018-01-02 | A0003 | TRDR001
2018-01-03 | A0004 | TRDR001
2018-01-04 | A0004 | TRDR002
2018-01-05 | A0006 | TRDR001
2018-01-05 | A0006 | TRDR003
期望的结果是找到那些在同一日期具有不同TWS的行
T_Date | Code | TWS
2018-01-01 | A0001 | TRDR001
2018-01-01 | A0001 | TRDR002
2018-01-05 | A0006 | TRDR001
2018-01-05 | A0006 | TRDR003
我试过一些方法,但都没有用。
select t.T_Date,t.Code,t.TWS
from trades t
group by t.T_Date,t.Code,t.TWS
having COUNT(t.TWS)>1
谁能帮帮我?
4条答案
按热度按时间bbuxkriu1#
我们可以使用
Exists
操作符:Demo
pobjuy322#
我会使用一个self-join,如下所示:
fnx2tebb3#
这段代码有用吗?
Demo
dgsult0t4#
期望的结果是找到那些在同一日期具有不同TWS的行
我建议使用窗口函数,而不是子查询或自连接。这是一次表扫描(而其他方法需要两次),因此效率更高。
我们可以只比较
t_date, code
的分区上tws
的最小值和最大值;如果它们不匹配,那么我们保留分区的所有行: