问答交流

【SQL问题】 JOIN时LAG的变量被0值填充

由bqv93dy2创建,最终由bqv93dy2 被浏览 1 用户

这是一个很严重的问题。

这段代码采用lag方式偏移获得的变量被0填充了一部分,如果是lag(1),则只有1个有效值。

%%sql
SELECT 
        a.date,
        a.instrument,
        a.name AS stock_name,
        a.close / m_lag(a.close, 2, ob := a.date, pb := a.instrument) - 1 AS stock_return2d,
        a.change_ratio as stock_ret1d,
    FROM cn_stock_prefactors a
    JOIN cn_stock_index_concept_component b 
        ON a.date = b.date AND a.instrument = b.member_code
    WHERE a.date > '2025-11-20' and a.name='江河集团'
    QUALIFY stock_return2d is NOT NULL
    ORDER BY a.date DESC,stock_return2d ASC
    LIMIT 5


下面这段代码一切正常

%%sql
with stock_data as (
    SELECT 
        a.date,
        a.instrument,
        a.name AS stock_name,
        a.close / m_lag(a.close, 2, ob := a.date, pb := a.instrument) - 1 AS stock_return2d,
        a.change_ratio as stock_ret1d,
    FROM cn_stock_prefactors a
    WHERE a.date > '2025-11-20' and a.name='江河集团'
    QUALIFY stock_return2d is NOT NULL
)
select * 
from stock_data a
JOIN cn_stock_index_concept_component b 
        ON a.date = b.date AND a.instrument = b.member_code
ORDER BY a.date DESC,stock_return2d ASC

标签

股票数据
评论
  • 每天都能发现新的问题,笑了。
  • 还是安心抄研报多因子策略,简单省事。
{link}