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

请求协助:基于多行数据创建缺失/不匹配数据查询

针对买卖方数据缺失/不匹配的查询方案

兄弟,太懂这种卡好几天的憋屈感了!试了各种JOIN和WITH都没头绪,大概率是咱们没把数据的结构拆明白——毕竟你这张表把买卖两边的字段都塞一块了,直接硬JOIN很容易绕进去。我给你捋个清晰的思路:

首先,咱们得把买方数据和卖方数据拆成两个独立的数据集,这样对比起来就清楚多了:

WITH BuySide AS (
    SELECT 
        BuySideTradeDate AS TradeDate,
        BuySideContract AS Contract,
        BuySidePrice AS Price,
        BuySideQuantity AS Quantity
    FROM your_table
    WHERE BuySideContract IS NOT NULL  -- 只保留有买方记录的行
),
SellSide AS (
    SELECT 
        SellSideTradeDate AS TradeDate,
        SellSideContract AS Contract,
        SellSidePrice AS Price,
        SellSideQuantity AS Quantity
    FROM your_table
    WHERE SellSideContract IS NOT NULL  -- 只保留有卖方记录的行
)

接下来,分三种核心场景查询缺失或不匹配的数据:

1. 只有买方记录、无对应卖方的合约

SELECT '无对应卖方记录' AS 不匹配类型, b.*
FROM BuySide b
LEFT JOIN SellSide s ON b.Contract = s.Contract
WHERE s.Contract IS NULL

2. 只有卖方记录、无对应买方的合约

SELECT '无对应买方记录' AS 不匹配类型, s.*
FROM SellSide s
LEFT JOIN BuySide b ON s.Contract = b.Contract
WHERE b.Contract IS NULL

3. 合约存在但价格/数量不匹配的情况

(这里假设匹配逻辑是同一合约+同一交易日的买卖数据应该对应,如果你的业务逻辑是按其他维度匹配,把JOIN条件改了就行)

SELECT 
    '价格/数量不匹配' AS 不匹配类型,
    b.Contract AS 合约编号,
    b.TradeDate AS 交易日期,
    b.Price AS 买方价格,
    s.Price AS 卖方价格,
    b.Quantity AS 买方数量,
    s.Quantity AS 卖方数量
FROM BuySide b
JOIN SellSide s ON b.Contract = s.Contract AND b.TradeDate = s.TradeDate
WHERE b.Price != s.Price OR b.Quantity != s.Quantity

额外提醒:

如果你的业务逻辑是“每一笔交易的买卖两边必须成对出现”,那当前的表结构其实不太合理——正常应该是买、卖各占一行,用唯一交易ID关联。不过基于你现有的表结构,上面的方法应该能帮你揪出问题。要是还有特殊的匹配规则(比如按时间段、特定价格区间),随时调整JOIN和WHERE条件就行!

内容的提问来源于stack exchange,提问作者xnetdude

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:29:10