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

在同一SQL查询中使用SUM与MAX(date)时的日期显示异常问题

问题解决:经销商多记录时Last Date无法显示的查询修正

现有表格展示

DealerBlocksLast Date
Dealer 11009-Feb-23
Dealer 2-524-Jan-23

问题描述

当经销商在主表中有多条记录时,当前查询无法正常显示Last Date字段,现有查询语句如下:

SELECT Dealer,
  SUM(CAST([Total Blocks] AS integer)), MAX(date) AS [Last Date]
FROM {{query1.data}}
WHERE Dealer = {{select1.value}}
OR {{select1.value == null}}
GROUP BY Dealer
ORDER BY Dealer

修正方案

1. 修复WHERE子句逻辑

原WHERE子句的OR逻辑存在优先级问题,可能导致部分日期记录被错误过滤,改成更严谨的条件:

WHERE ({{select1.value}} IS NULL OR Dealer = {{select1.value}})

该写法确保:当选择框为空时返回所有经销商数据;选择特定经销商时,仅返回对应经销商的记录,避免逻辑冲突。

2. 确保日期字段正确转换

如果date字段是字符串格式,直接用MAX()可能无法正确识别日期顺序,需先转换为日期类型再取最大值。不同数据库的转换函数不同,以下是常见示例:

  • SQL Server:MAX(CONVERT(DATE, date, 106)) AS [Last Date](106对应dd-MMM-yy格式)
  • MySQL:MAX(STR_TO_DATE(date, '%d-%b-%y')) AS [Last Date]
  • PostgreSQL:MAX(TO_DATE(date, 'DD-Mon-YY')) AS [Last Date]

3. 完整修正后的查询示例(以SQL Server为例)

SELECT Dealer,
  SUM(CAST([Total Blocks] AS integer)) AS Blocks,
  MAX(CONVERT(DATE, date, 106)) AS [Last Date]
FROM {{query1.data}}
WHERE ({{select1.value}} IS NULL OR Dealer = {{select1.value}})
GROUP BY Dealer
ORDER BY Dealer

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 19:31:23