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

如何在单条SELECT语句中为max(Date)和min(Date)设置不同筛选条件

解决方案:按规则计算交易的最早与最晚时间

要实现「计算最早交易时间仅包含5:00之后的记录,最晚交易时间包含所有记录」的需求,无需拆分查询再关联,直接在窗口聚合函数中通过case表达式设置筛选条件即可:

from (
      select l.Name,
             s.ShopID, 
             s.Day,
             s.Time,
             s.Date,
             -- 计算最晚交易时间:包含所有记录
             max(s.Date) over (partition by s.Day) as max_date,
             -- 计算最早交易时间:仅包含Time≥5的记录
             min(case when s.Time >= 5 then s.Date end) over (partition by s.Day) as min_date
      from [Shops].[Transaction].[Transactions] s
      INNER JOIN [Shops].[Location].[Locations] l ON s.ShopID = l.ShopID
      WHERE s.ShopID IN (1, 2, 3, 4, 5) AND s.Day > 20210131 AND s.Time <> 4
    ) t 

关键说明:

  • 最早时间计算:case when s.Time >=5 then s.Date end会把5点前的记录转为null,而min()函数会自动忽略null值,从而只统计5点后的交易时间最小值。
  • 最晚时间计算:直接使用max(s.Date),会包含所有符合WHERE条件的交易记录(包括凌晨5点前的隔夜交易)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 20:42:02