You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询同一日期同一Code下TWS不同的数据行?

问题分析

你原SQL的问题在于分组时包含了TWS字段,这会把每个(T_Date, Code, TWS)的组合单独分成一组,每组里的TWS都是唯一的,COUNT(t.TWS)自然永远是1,完全达不到筛选目标数据的效果。

正确的思路是:先找出那些同一T_Date和Code下存在多个不同TWS的组合,再基于这些组合去原表中取出对应的所有行。

解决方案

方法1:子查询+关联

先通过子查询筛选出符合条件的(T_Date, Code)对,再和原表关联获取完整数据:

SELECT t.T_Date, t.Code, t.TWS
FROM trades t
INNER JOIN (
    SELECT T_Date, Code
    FROM trades
    GROUP BY T_Date, Code
    -- 统计同一日期和代码下的不同TWS数量大于1
    HAVING COUNT(DISTINCT TWS) > 1
) AS filtered ON t.T_Date = filtered.T_Date AND t.Code = filtered.Code
ORDER BY t.T_Date, t.Code, t.TWS;

方法2:窗口函数(推荐,更高效)

使用窗口函数直接在每行计算当前(T_Date, Code)分组下的不同TWS数量,再筛选出数量大于1的行:

SELECT T_Date, Code, TWS
FROM (
    SELECT 
        T_Date, 
        Code, 
        TWS,
        -- 计算当前分组内不同TWS的数量
        COUNT(DISTINCT TWS) OVER(PARTITION BY T_Date, Code) AS tws_count
    FROM trades
) AS temp
WHERE tws_count > 1
ORDER BY T_Date, Code, TWS;
验证结果

执行上述任意一种SQL,都会得到你期望的结果:

T_Date     | Code  | TWS
2018-01-01 | A0001 | TRDR001
2018-01-01 | A0001 | TRDR002
2018-01-05 | A0006 | TRDR001
2018-01-05 | A0006 | TRDR003

内容的提问来源于stack exchange,提问作者Abdullah-Al-Nahian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:05:03