【发布时间】:2018-10-12 10:35:25
【问题描述】:
我想用从 VHSTATUS 表中检索到的最新时间更新 VHMAIN 表。我写了如下查询
select a.vehi_id,a.statustime,a.vhstatus,max(b.statustime)
newstatustime,b.vhstatus newstatus
from vhmain a inner join vhstatus b on a.vehi_id=b.vehi_id2
group by a.vehi_id,a.statustime,a.vhstatus having
a.statustime<>max(b.statustime)
我遇到了错误
列“vhstatus.vhstatus”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
如果我在 GROUP BY 子句中添加“vhstatus.vhstatus”,整个数据将是错误的
请建议我查询
编辑:表格和预期结果数据
VHMAIN vehi_id statustime vhstatus 38 2004-03-08 9 VHSTATUS vehi_id2 statustime vhstatus 38 2004-03-11 55 38 2004-03-08 55 38 2004-03-08 9 Expected result vehi_id statustime vhstatus newstatustime newstatus 38 2004-03-08 9 2004-03-11 55
【问题讨论】:
-
请添加相关表格的结构。一些样本数据也不会受到伤害。
-
更新语句在哪里?
-
@FindOutIslamNow 我猜 George 正在尝试首先选择正确的值,以确保更新实际上会更新预期的记录。
-
@LajosArpad:使用表格的示例结构进行编辑。
-
我已经根据您的结构添加了一个答案,但请注意它未经测试。
标签: select sql-server-2012 group-by aggregate-functions