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

T-SQL技术问题:如何获取指定条件下Recording Date的最小/最大值

修正SQL查询以获取符合条件的Recording Date极值

原查询的问题在于WHERE子句中的子查询未添加逻辑关联(比如IN),且子查询未限定仅针对符合pattern = 'nnnnnn-n'的记录,导致子查询完全未发挥筛选作用,最终返回了所有符合pattern的记录。

正确写法1:直接聚合筛选后的记录

先过滤出符合pattern条件的记录,再直接计算最小和最大Recording Date:

SELECT 
    MIN([Recording Date]) AS MIN_DATE,
    MAX([Recording Date]) AS MAX_DATE
FROM 
    [TPEConversionTeam].[dbo].[KY_Shelby_Recorder_History]
WHERE 
    REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
        TRIM([Document Number]),
        '0','n'),'1','n'),'2','n'),'3','n'),'4','n'),'5','n'),'6','n'),'7','n'),'8','n'),'9','n') = 'nnnnnn-n'

正确写法2:用CTE简化重复的Pattern计算

如果需要保留pattern字段以确认筛选逻辑,可用CTE先统一计算pattern,再聚合:

WITH FilteredRecords AS (
    SELECT 
        [Recording Date],
        REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
            TRIM([Document Number]),
            '0','n'),'1','n'),'2','n'),'3','n'),'4','n'),'5','n'),'6','n'),'7','n'),'8','n'),'9','n') AS pattern
    FROM 
        [TPEConversionTeam].[dbo].[KY_Shelby_Recorder_History]
)
SELECT 
    MIN([Recording Date]) AS MIN_DATE,
    MAX([Recording Date]) AS MAX_DATE,
    pattern
FROM FilteredRecords
WHERE pattern = 'nnnnnn-n'
GROUP BY pattern

原查询错误点说明

  • WHERE子句缺少逻辑运算符(如IN)连接子查询,导致子查询被忽略
  • 子查询未限定仅筛选符合pattern条件的记录,即使添加连接符,也会返回全表的极值而非目标子集的极值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 10:46:07