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

SQL查询过滤问题:日期按年筛选、取最新记录及dbo.Items条件过滤

问题1:日期字段与dbo.Items.Condition='A'过滤失效解决

  • 你当前代码中dbo.Items是左连接关联,若直接在WHERE子句添加dbo.Items.Condition = 'A'会将左连接隐式转为内连接,导致无Items匹配的记录被过滤:
    • 若需要保留无Items匹配的记录:将dbo.Items.Condition = 'A'添加到LEFT OUTER JOIN dbo.Items的ON子句中
    • 若仅需要保留Condition为A的匹配记录:在WHERE子句中添加AND dbo.Items.Condition = 'A'即可
  • 日期过滤优化:现有YEAR(ed.Created) >=2021逻辑有效,但如果数据量较大,建议改为ed.Created >= '2021-01-01',避免对每行做函数运算,可利用ed.Created字段的索引提升查询效率。

问题2:ed.Created字段转年份实现按年筛选

  • 你代码中已使用YEAR(ed.Created) AS Jaar正确提取了年份值,若需要按指定年份筛选,直接在WHERE子句添加YEAR(ed.Created) = 目标年份即可;
  • 高性能筛选方案:如需筛选某一年数据可使用日期范围写法,例如筛选2023年数据:ed.Created >= '2023-01-01' AND ed.Created < '2024-01-01',兼容性和执行效率更高。

问题3:去除重复记录仅保留最新数据

  • 使用ROW_NUMBER()窗口函数,按你需要去重的业务维度分组(示例按ItemCode、PropName分组,可按需调整),按ed.Created倒序排序,取排序为1的记录即为最新数据。

修正后完整代码

WITH ranked_log AS (
    SELECT  
        h.fullname AS FullName, 
        ep.PropName, 
        i.ItemCode, 
        dbo.Items.Description, 
        ep.CaptionTermId, 
        ed.OldValue, 
        ed.NewValue, 
        YEAR(ed.Created) AS Jaar, 
        i.crdnr, 
        dbo.cicmpy.cmp_name, 
        ed.Created,
        -- 按业务去重字段分组,按创建时间倒序排序
        ROW_NUMBER() OVER (PARTITION BY i.ItemCode, ep.PropName ORDER BY ed.Created DESC) AS rn
    FROM dbo.cicmpy 
    RIGHT OUTER JOIN dbo.ItemAccounts AS i 
        ON dbo.cicmpy.crdnr = i.crdnr 
    LEFT OUTER JOIN dbo.Items 
        ON i.ItemCode = dbo.Items.ItemCode 
        AND dbo.Items.Condition = 'A' -- 左连接场景下Condition过滤放此处
    RIGHT OUTER JOIN dbo.EbcDataLog AS ed 
        INNER JOIN dbo.EbcProps AS ep 
            ON ed.Property = ep.PropId 
        LEFT OUTER JOIN dbo.humres AS h 
            ON ed.Creator = h.res_id 
        ON CAST(i.ID AS varchar(36)) = ed.DataKey
    WHERE  
        i.ItemCode LIKE 'I4107.RHB0029' 
        AND ep.CaptionTermId = 4850 
        AND ed.Created >= '2021-01-01' -- 优化后的日期过滤
)
SELECT * 
FROM ranked_log 
WHERE rn = 1 -- 仅取最新的一条记录
ORDER BY PropName

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:24:06